列举数组中不同的排列方式,主要用于穷举法
from itertools import permutations
#列表中所有不同排序方式的组合,此时allList为一个迭代器
allList = permutations(['+','-','*','÷'])
#可以只选择其中的三个
allList = permutations(['+','-','*','÷'],3)
注意!不能进行多次循环,故不能直接放在for循环内
i = 0
j = 0
nums_possible = permutations((1,2,3))
operators_possible = permutations(['+','-','*'])
for nums in nums_possible:
i += 1
for op in operators_possible:
j += 1
print i #6
print j #6
debug跟踪发现,当i=1时,operators_possible第一次循环是正常的,可是后面就不会再进入循环了
这是因为第一次就已经迭代完了,调用了next里面的
raise StopIteration()
具体可参考
http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/
i = 0
j = 0
nums_possible = permutations((1,2,3))
operators_possible = list(permutations(['+','-','*']))
for nums in nums_possible:
i += 1
for op in operators_possible:
j += 1
print i #6
print j #36