我正在尝试在列表中获取值,例如[1,2,3]
并将它们相互减去。因此它会返回[-1,-1]
,因为第一个值是1-2
,第二个值是2-3
。我如何在python中实现这一点?我试过了
[x-y for (x,y) in list]
但是这会给“解压错误需要多个值。”
答案 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])