我正在嘗試將列表中的值(如[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