Как бы вы описали понимание списков в python для генерации серии n-1
deltas между n
элементов в упорядоченном списке?Упорядочить по спискам в deltas
Пример:
L = [5,9,2,1,7]
RES = [5-9,9-2,2-1,1-7] = [4,7,1,6] # absolute values
Как бы вы описали понимание списков в python для генерации серии n-1
deltas между n
элементов в упорядоченном списке?Упорядочить по спискам в deltas
Пример:
L = [5,9,2,1,7]
RES = [5-9,9-2,2-1,1-7] = [4,7,1,6] # absolute values
RES = [abs(L[i]-L[i+1]) for i in range(len(L)-1)]
recipes раздел itertools documentation включает исходный код для функции называется попарно, которые вы можете использовать для этой цели:
from itertools import *
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = tee(iterable)
b.next()
return izip(a, b)
Вы можете скопировать и вставить в ваш файл. С помощью этой функции определяется это довольно просто сделать то, что вы хотите:
l = [5, 9, 2, 1, 7]
print [abs(a-b) for a,b in pairwise(l)]
Результат
[4, 7, 1, 6]
Просто понял это:
[abs(x-y) for x,y in zip(L[:-1], L[1:])]
Для больших списков вы можете использовать itertools.izip вместо zip. http://docs.python.org/library/itertools.html#itertools.izip –
Мне не нравится ненужное дублирование исходного списка. –
Какая версия Python? –