Python:如何获得列表中的每个组合

时间:2014-02-06 06:09:56

标签: python list combinations permutation

我有大量的列表清单。这里只有几个:

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']

2 个答案:

答案 0 :(得分: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']

答案 1 :(得分: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循环。例如,对于B中的y,乘积(A,B)的返回值与(x中的x的(x,y)相同)。

但我们正在使用L1的参数unpacked参数A,B,C,D ......