2017-03-18 36 views
0

我有一個列表,諸如這樣的:使用lambda表達式查找列表中每兩個相鄰元素之間的差異?

lst = [1, 13, 5, 23, 22, 1, 2] 

而且我想用一個lambda表達式得到這個發現每兩個相鄰元素之間的區別:

differences = [12, -8, 18, -1, -21, 1] 

我將如何做到這一點?謝謝。

+2

是否必須lambda表達式?請問爲什麼? – Denziloe

+0

可能重複[在Python中迭代一個列表作爲pair(current,next)](http://stackoverflow.com/questions/5434891/iterate-a-list-as-pair-current-next-in-python) – pvg

回答

0

爲什麼使用lambda表達式?對於在在線解決方案,您可以使用列表理解:

[lst[i+1]-lst[i] for i in range(len(lst)-1)] 
2

使用的inline for looplambda。循環將遍歷索引,然後使用索引從提供的數組中訪問數字,添加相鄰索引。

magicSubtract = lambda lst: [(lst[i] - lst[i+1]) for i in range(0,len(lst)-1)] 
print(magicSubtract([1, 13, 5, 23, 22, 1, 2])) 
0

或者您可以使用地圖:

map(lambda pair: pair[1] - pair[0], zip(lst[:-1], lst[1:])) 

應用列表發送給結果,如果你想有一個清單:

list(_) 
# [12, -8, 18, -1, -21, 1] 
相關問題