2017-04-12 40 views
2

鑑於任意長度的兩個列表的所有可能的組合:找到兩個列表

list1 = ['a', 'b', 'c'] 
list2 = ['1', '2', '3'] 

list1是對象的列表和list2是每個object.How的可能值做我覺得這兩個的所有可能組合列表(我不知道如果這是正確的術語)

預期輸出:

[ 
    [('a', '1'), ('b', '1'), ('c', '1')], 
    [('a', '1'), ('b', '1'), ('c', '2')], 
    [('a', '1'), ('b', '1'), ('c', '3')], 
    [('a', '2'), ('b', '1'), ('c', '1')], 
    [('a', '2'), ('b', '1'), ('c', '2')], 
    [('a', '2'), ('b', '1'), ('c', '3')], 
    [('a', '3'), ('b', '1'), ('c', '1')], 
    [('a', '3'), ('b', '1'), ('c', '2')], 
    [('a', '3'), ('b', '1'), ('c', '3')], 
    # etc 
] 

回答

4

您可以使用itertools.product()獲得鈣輸入iterables的rtesian產品和郵政編碼,其中:

from itertools import product 

a = ['a', 'b', 'c'] 
b = ['1', '2', '3'] 
print([list(zip(a, p)) for p in product(b,repeat=3)]) 

輸出:

[[('a', '1'), ('b', '1'), ('c', '1')], [('a', '1'), ('b', '1'), ('c', '2')], [('a', '1'), ('b', '1'), ('c', '3')], [('a', '1'), ('b', '2'), ('c', '1')], [('a', '1'), ('b', '2'), ('c', '2')], [('a', '1'), ('b', '2'), ('c', '3')], [('a', '1'), ('b', '3'), ('c', '1')], [('a', '1'), ('b', '3'), ('c', '2')], [('a', '1'), ('b', '3'), ('c', '3')], [('a', '2'), ('b', '1'), ('c', '1')], [('a', '2'), ('b', '1'), ('c', '2')], [('a', '2'), ('b', '1'), ('c', '3')], [('a', '2'), ('b', '2'), ('c', '1')], [('a', '2'), ('b', '2'), ('c', '2')], [('a', '2'), ('b', '2'), ('c', '3')], [('a', '2'), ('b', '3'), ('c', '1')], [('a', '2'), ('b', '3'), ('c', '2')], [('a', '2'), ('b', '3'), ('c', '3')], [('a', '3'), ('b', '1'), ('c', '1')], [('a', '3'), ('b', '1'), ('c', '2')], [('a', '3'), ('b', '1'), ('c', '3')], [('a', '3'), ('b', '2'), ('c', '1')], [('a', '3'), ('b', '2'), ('c', '2')], [('a', '3'), ('b', '2'), ('c', '3')], [('a', '3'), ('b', '3'), ('c', '1')], [('a', '3'), ('b', '3'), ('c', '2')], [('a', '3'), ('b', '3'), ('c', '3')]] 
+0

完美!作爲改進,我在產品(b,repeat = len(a)]中爲p做了最後一行'[list(zip(a,p)),以允許任何長度列表 –