例如,
我有一个要生成排列的字符列表,例如,“*”、“+”,还有一个长度,我要从中生成排列,例如2。换句话说,我想找到所提供列表的所有组合,直到所提供的长度。调用generatePermutations可能是这样的。

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

应返回:
*, *
*, +
+, *
+, +

另一个例子是:
generatePermutations(['*', '+'], 3)
*, *, *
*, *, +
*, +, +
*, +, *
+, *, +
+, *, *
+, +, *
+, +, +

我该怎么做呢?

最佳答案

使用itertool.product你要的是cartesian product
实例

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

关于python - 如何根据给定的字符和长度生成排列列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41667665/

10-11 21:06