我有這樣一個列表的列表:如何在列表中一次應用兩個函數列表?
all_lists = [list0, list1, list2, list3, ....., listn]
而且像這樣採用兩個參數,從這個all_lists的功能。
def function(list0, list1):
do stuff
該函數將繼續從該all_lists通過移動索引1直到它到達listn參數。
有沒有一種有效的方法來做到這一點? 謝謝!
我有這樣一個列表的列表:如何在列表中一次應用兩個函數列表?
all_lists = [list0, list1, list2, list3, ....., listn]
而且像這樣採用兩個參數,從這個all_lists的功能。
def function(list0, list1):
do stuff
該函數將繼續從該all_lists通過移動索引1直到它到達listn參數。
有沒有一種有效的方法來做到這一點? 謝謝!
zip
列表本身並在循環中傳遞參數。
for l1, l2 in zip(all_lists[:-1], all_lists[1:]): # or zip(all_lists, all_lists[1:])
function(l1, l2)
MVCE:
lst = [1, 2, 3, 4]
for i, j in zip(lst, lst[1:]):
print(i, j)
1 2
2 3
3 4
你不需要'[:-1]',所以充其量它是一個VCE :-P –
@StefanPochmann來自Python的禪宗:'顯然比隱含更好......':p –
呃,那只是第二個。首先是'美麗勝於醜陋。' –
如果你想與所有可能的組合,您可以使用itertools combination方法
>>> import itertools
>>> a = [[1,2],[2,3],[3,4]]
>>>
>>> for _lst in itertools.combinations(a, 2):
... print _lst
...
([1, 2], [2, 3])
([1, 2], [3, 4])
([2, 3], [3, 4])
爲了您代碼:
all_lists = [list0, list1, list2, list3, ....., listn]
for l1,l2 in itertools.combinations(all_list , 2):
print l1,l2
# do stuff
兩個參數的意思是所有組合,比如'功能(列表0,列表1)'或'功能(列表0,列表2)' – Kallz