使用全新的 Python 2.6,您可以使用 itertools 模块返回 iterables 的笛卡尔积的标准解决方案:
import itertools
print list(itertools.product([1,2,3], [4,5,6]))
[(1, 4), (1, 5), (1, 6),
(2, 4), (2, 5), (2, 6),
(3, 4), (3, 5), (3, 6)]
您可以提供“重复”参数以使用可迭代和自身执行产品:
print list(itertools.product([1,2], repeat=3))
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (1, 2, 2),
(2, 1, 1), (2, 1, 2), (2, 2, 1), (2, 2, 2)]
你也可以用组合来调整一些东西:
print list(itertools.combinations('123', 2))
[('1', '2'), ('1', '3'), ('2', '3')]
如果顺序很重要,则有排列:
print list(itertools.permutations([1,2,3,4], 2))
[(1, 2), (1, 3), (1, 4),
(2, 1), (2, 3), (2, 4),
(3, 1), (3, 2), (3, 4),
(4, 1), (4, 2), (4, 3)]
当然,所有那些很酷的东西并不完全相同,但你可以以某种方式使用它们来解决你的问题。
请记住,您可以使用 list()、tuple() 和 set() 将元组或列表转换为集合,反之亦然。