2017-08-26 111 views
1

我有這樣一個列表的列表:如何在列表中一次應用兩個函數列表?

all_lists = [list0, list1, list2, list3, ....., listn] 

而且像這樣採用兩個參數,從這個all_lists的功能。

def function(list0, list1): 
    do stuff 

該函數將繼續從該all_lists通過移動索引1直到它到達listn參數。

有沒有一種有效的方法來做到這一點? 謝謝!

+0

兩個參數的意思是所有組合,比如'功能(列表0,列表1)'或'功能(列表0,列表2)' – Kallz

回答

2

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 
+0

你不需要'[:-1]',所以充其量它是一個VCE :-P –

+0

@StefanPochmann來自Python的禪宗:'顯然比隱含更好......':p –

+3

呃,那只是第二個。首先是'美麗勝於醜陋。' –

1

如果你想與所有可能的組合,您可以使用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 
相關問題