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

2024-04-29 00:13:20 发布

您现在位置: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']

Tags: l1列表actattaccgccccccct
2条回答

使用^{}

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

从文档中:

Equivalent to nested for-loops in a generator expression. For example, product(A, B) returns the same as ((x,y) for x in A for y in B).

但我们用的是*参数L1的无包装参数,表示A,B,C,D。。。你知道吗

使用^{}

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

相关问题 更多 >