我正在尝试将列表中的值(如[1,2,3]
)相减并将它们相减。所以它会返回[-1,-1]
,因为第一个值是1-2
,第二个值是2-3
。我将如何在Python中实现这一点?我试过如何从python中的列表中的前一个值减去值?
[x-y for (x,y) in list]
但是这给出'需要多个值来解开错误'。
我正在尝试将列表中的值(如[1,2,3]
)相减并将它们相减。所以它会返回[-1,-1]
,因为第一个值是1-2
,第二个值是2-3
。我将如何在Python中实现这一点?我试过如何从python中的列表中的前一个值减去值?
[x-y for (x,y) in list]
但是这给出'需要多个值来解开错误'。
这不是一个好主意,影着内置list
,所以我通过izipping与本身的列表中,由一个指数偏移这里
[x - y for x, y in zip(the_list, the_list[1:])]
这工作谢谢! – Jared
您还可以使用创造了一个发电机改变了你的变量名称。
from itertools import izip, islice
[x - y for x,y in izip(lst, islice(lst, 1, None))]
这是方便的,如果由于某种原因,lst
本身就是一个发电机,否则不容易检查其长度时间提前,或者你只是不想直接使用它。
如果你能够使用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])
如果你的列表被称为'list'那么你有一个以上的问题。但是尝试使用'range'来按位置访问元素,而不是直接在列表中循环。 – Serdalis