2017-01-15 57 views
0

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

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

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

应返回:

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

另一个例子是:

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

我怎么会去这样做呢?

+1

你如何去这样做呢?发生了什么? – jonrsharpe

+1

查看'itertools'中的'product()'。 – tarashypka

回答

2

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

例子

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

这正是我所期待的。由于某种原因,它没有跳出我的API。谢谢! – Beardo

相关问题