如何从python中的列表中的前一个值中减去该值?

时间:2015-09-14 02:58:43

标签: python list

我正在尝试在列表中获取值,例如[1,2,3]并将它们相互减去。因此它会返回[-1,-1],因为第一个值是1-2,第二个值是2-3。我如何在python中实现这一点?我试过了

[x-y for (x,y) in list]

但是这会给“解压错误需要多个值。”

3 个答案:

答案 0 :(得分:6)

隐藏内置list不是一个好主意,所以我在这里更改了你的变量名

[x - y for x, y in zip(the_list, the_list[1:])]

答案 1 :(得分:2)

您可以使用列表推导,但指定从列表末尾的1开始的range(或者从0开始减去1减去列表的长度):

lst = [1, 2, 3]
>>> [lst[i - 1] - lst[i] for i in range(1, len(lst))]
[-1, -1]

答案 2 :(得分:2)

如果您能够使用numpy.diff,这很容易:

In [22]: import numpy as np

In [23]: -np.diff([1,2,3])
Out[23]: array([-1, -1])

In [24]: -np.diff([1,2,4,3])
Out[24]: array([-1, -2,  1])