Новый массив должен быть создан с использованием существующего массива

1

В принципе, я хотел бы сравнить мой существующий массив (timestamp, value) с предыдущим значением минус

Скажем, например

Array1 = [[key1, v1] [key2, v2] [key3, v3] [key4, v4]]

и хотел бы создать новый массив, например

Array2 = [[key2, v2-v1] [key3, v3-v2] [key4, v4-v3]]

здесь ключ - метка времени

  • 0
    Вы делали какие-либо попытки? Если это так, вы должны поделиться этим.
  • 0
    Использование dict для сохранения этих ключевых значений будет более эффективным. collections.OrderedDict для сохранения порядка.
Теги:
python-3.x

2 ответа

0

Вы можете использовать enumerate и нарезать свой исходный индекс, чтобы начать с первого индекса, такого как

res = [[v[0], f'{arr_1[i+1][1]}-{arr_1[i][1]}'] for i, v in enumerate(arr_1[1:])]
# [['key2', 'v2-v1'], ['key3', 'v3-v2'], ['key4', 'v4-v3']]

Расширенный цикл:

res = []
for i, v in enumerate(arr_1[1:]):
    res.append([v[0], f'{arr_1[i+1][1]}-{arr_1[i][1]}'])
0

Вот простой способ его решить:

Array1 = [['key1', 1], ['key2', 2], ['key3', 3], ['key4', 4]]

array2 = []
for i, elem in enumerate(Array1[1:]):
    array2.append([elem[0], elem[1] - Array1[i][1]])

print(array2)

Вы перебираете элементы Array1 начиная со второго элемента, и сохраняете key какой он есть, тогда как вы вычисляете второй элемент как разницу текущего элемента за вычетом предыдущего значения элемента (то есть Array1[i][1], так как i начинается с 0). Это печатает:

[['key2', 1], ['key3', 1], ['key4', 1]]

Надеюсь это поможет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню