Python生成n个列表的所有n个排列

时间:2015-04-29 19:11:45

标签: python algorithm permutation

我有n个不同长度的列表,我想创建所有可能的排列。

所以,例如如果a=[1,2]b=[3,4,5]那么我很想获得res=[[1,3],[1,4],[1,5],[2,3],[2,4],[2,5]] 我一直试图使用递归函数来实现这一点,结果证明它既不是非常有效也不是非常pythonic。 经验丰富的python程序员将如何解决这个问题?

1 个答案:

答案 0 :(得分:14)

它被称为两个序列的Cartesian product

这已经在Python中作为库函数提供:itertools.product

示例:

>>> import itertools
>>> a = [1, 2]
>>> b = [3, 4, 5]
>>> list(itertools.product(a, b))
[(1, 3), (1, 4), (1, 5), (2, 3), (2, 4), (2, 5)]