如何用Python语言编写列表理解,以便在有序列表中的n
项之间生成一系列n-1
增量?
示例:
L = [5,9,2,1,7]
RES = [5-9,9-2,2-1,1-7] = [4,7,1,6] # absolute values
发布于 2010-05-08 11:03:42
RES = [abs(L[i]-L[i+1]) for i in range(len(L)-1)]
发布于 2010-05-08 10:56:05
itertools documentation的recipes部分包含一个名为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]
发布于 2010-05-08 10:56:30
我就想明白了:
[abs(x-y) for x,y in zip(L[:-1], L[1:])]
https://stackoverflow.com/questions/2793753
复制相似问题