【发布时间】:2014-04-08 02:26:30
【问题描述】:
我一直在寻找这个,但找不到我想要的。我确定我以前见过这样做,但我似乎找不到它。这是一个例子:
在这种情况下,我想取数组中每个元素的差异,
#Generate sample list
B = [a**2 for a in range(10)]
#Take difference of each element
C = [(b+1)-b for b in B]
(b+1) 是表示数组中的下一个元素,我不知道该怎么做,显然不起作用,给出结果:
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
我想要的结果是:
[1, 3, 5, 7, 9, 11, 13, 15, 17]
我知道这个结果比原始数组短,但是这样做的原因是替换丑陋的表达式,例如:
C = [B[i+1]-B[i] for i in range(len(B)-1)]
在这种情况下,它确实没有那么糟糕,但是在某些情况下,我需要使用长表达式遍历多个变量,并且每次都必须编写索引会很烦人。现在我希望有一种我不知道的简单的pythonic方法来做到这一点......
编辑:我的意思是必须对多个变量执行此操作的一个示例是:
X = [a for a in range(10)]
Y = [a**2 for a in range(10)]
Z = [a**3 for a in range(10)]
for x,y,z in zip(X,Y,Z):
x + (x+1) + (y-(y+1))/(z-(z+1))
其中 (x+1),(y+1),(z+1) 表示下一个元素,而不是:
for i in range(len(X)):
x[i] + x[i+1] + (y[i]-y[i+1])/(z[i]-z[i+1])
我正在使用 python 2.7.5 顺便说一句
【问题讨论】:
标签: python arrays list for-loop iterator