如何根据给定的字符和长度生成排列列表?

时间:2017-01-15 23:53:05

标签: python algorithm permutation

例如,

我有一个字符列表,我想要生成例如['*','+']和我希望生成排列的长度,例如2.换句话说,我想找到所提供列表的所有组合,直到提供的长度。对generatePermutations的调用可能如下所示。

generatePermutations(['*', '+'], 2)

应返回:

*, *
*, +
+, *
+, +

另一个例子是:

generatePermutations(['*', '+'], 3)
*, *, *
*, *, +
*, +, +
*, +, *
+, *, +
+, *, *
+, +, *
+, +, +

我将如何做到这一点?

1 个答案:

答案 0 :(得分:2)

使用itertool.product。您要求的是cartesian product

实施例

>>> list(itertools.product(['*', '+'], repeat=2))
[('*', '*'), ('*', '+'), ('+', '*'), ('+', '+')]
>>> list(itertools.product(['*', '+'], repeat=3))
[('*', '*', '*'), ('*', '*', '+'), ('*', '+', '*'), ('*', '+', '+'), ('+', '*', '*'), ('+', '*', '+'), ('+', '+', '*'), ('+', '+', '+')]