2014-02-06 99 views
0

我有大量的列表清單。下面是隻有幾個:Python:如何獲得列表中的每個組合

L1=(['G', 'C', 'A'], ['T', 'C'], ['T', 'C']) 
L2=(['T', 'C'], ['T', 'C'], ['T', 'C']) 

我需要列出這樣的:(從列表所以基本上每個重複列出)

L1=['GTT','CTT','ATT','GCC','CCC','ACC','GTC','CTC','ATC','GCT','CCT','ACT'] 
L2=['TTT','CTT','TCC','CCC','TCT','CTC','TTC','CCT'] 
+0

在第一示例中,' 'CCT', 'GCT',「ACT''是失蹤。 – falsetru

回答

3

使用itertools.product

>>> [''.join(x) for x in itertools.product(*L1)] 
['GTT', 'GTC', 'GCT', 'GCC', 'CTT', 'CTC', 'CCT', 'CCC', 'ATT', 'ATC', 'ACT', 'ACC'] 
>>> 
>>> [''.join(x) for x in itertools.product(*L2)] 
['TTT', 'TTC', 'TCT', 'TCC', 'CTT', 'CTC', 'CCT', 'CCC'] 

來自文檔:

等同於生成器表達式中的嵌套for循環。例如,產品(A,B)返回與((x,y)相同的A中的x,B中的y)。

但是我們使用L1的爲A,B,C,d *參數解壓縮參數...

3

使用itertools.product

>>> L1=(['G', 'C', 'A'], ['T', 'C'], ['T', 'C']) 
>>> L2=(['T', 'C'], ['T', 'C'], ['T', 'C']) 
>>> 
>>> import itertools 
>>> 
>>> [''.join(xs) for xs in itertools.product(*L1)] 
['GTT', 'GTC', 'GCT', 'GCC', 'CTT', 'CTC', 'CCT', 'CCC', 'ATT', 'ATC', 'ACT', 'ACC'] 
>>> [''.join(xs) for xs in itertools.product(*L2)] 
['TTT', 'TTC', 'TCT', 'TCC', 'CTT', 'CTC', 'CCT', 'CCC'] 
相關問題