从python中的子列表生成所有可能的列表

时间:2016-11-28 21:26:01

标签: python

假设我有列表[['a', 'b', 'c'], ['d', 'e'], ['1', '2']]

我想生成一个列表,其中第一个位置是第一个子列表中的任何值,第二个是 - 来自第二个等等。

所以,举几个例子:

['a', 'd', '1']
['b', 'd', '1']
['c', 'd', '1']
['a', 'e', '1']
['a', 'e', '2']
['b', 'e', '1']
['b', 'e', '2']

1 个答案:

答案 0 :(得分:2)

你需要itertools.product()返回inpur iterables的笛卡尔积:

>>> from itertools import product
>>> my_list = [['a', 'b', 'c'], ['d', 'e'], ['1', '2']]

#                v Unwraps the list
>>> list(product(*my_list))
[('a', 'd', '1'), 
 ('a', 'd', '2'), 
 ('a', 'e', '1'), 
 ('a', 'e', '2'), 
 ('b', 'd', '1'), 
 ('b', 'd', '2'), 
 ('b', 'e', '1'), 
 ('b', 'e', '2'), 
 ('c', 'd', '1'), 
 ('c', 'd', '2'), 
 ('c', 'e', '1'), 
 ('c', 'e', '2')]