列出对三角洲系列的理解

时间:2010-05-08 10:48:52

标签: python list-comprehension

如何在python中编写列表推导以在有序列表中的n-1项之间生成一系列n增量?

示例:

L = [5,9,2,1,7]
RES = [5-9,9-2,2-1,1-7] = [4,7,1,6] # absolute values

3 个答案:

答案 0 :(得分:5)

RES = [abs(L[i]-L[i+1]) for i in range(len(L)-1)]

答案 1 :(得分:4)

recipesitertools documentation部分包含一个名为pairwise的函数的源代码,您可以将其用于此目的:

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] 

答案 2 :(得分:2)

刚想通了:

[abs(x-y) for x,y in zip(L[:-1], L[1:])]
相关问题