在Python中获取一系列列表的笛卡尔积

问题:

如何从一组列表中获取笛卡尔乘积(每种可能的值组合)?
输入:

somelists = [
   [1, 2, 3],
   ['a', 'b'],
   [4, 5]
]

所需输出:

[(1, 'a', 4), (1, 'a', 5), (1, 'b', 4), (1, 'b', 5), (2, 'a', 4), (2, 'a', 5) ...]

回答:

在Python 2.6+

import itertools
for element in itertools.product(*somelists):
    print(element)

文档:
 Python 3 – itertools.product

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Get the cartesian product of a series of lists in Python

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

48 − = 47