permutations

来源:互联网 发布:手机淘宝整点抢购技巧 编辑:程序博客网 时间:2024/06/16 11:33

列举数组中不同的排列方式,主要用于穷举法

from itertools import permutations#列表中所有不同排序方式的组合,此时allList为一个迭代器allList = permutations(['+','-','*','÷'])#可以只选择其中的三个allList = permutations(['+','-','*','÷'],3)


注意!不能进行多次循环,故不能直接放在for循环内

i = 0j = 0nums_possible = permutations((1,2,3))operators_possible = permutations(['+','-','*'])for nums in nums_possible:    i += 1    for op in operators_possible:        j += 1print i #6print j #6
debug跟踪发现,当i=1时,operators_possible第一次循环是正常的,可是后面就不会再进入循环了

这是因为第一次就已经迭代完了,调用了next里面的

raise StopIteration()

具体可参考

http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/


如果需要放在多次循环,应该转换成list
i = 0j = 0nums_possible = permutations((1,2,3))operators_possible = list(permutations(['+','-','*']))for nums in nums_possible:    i += 1    for op in operators_possible:        j += 1print i #6print j #36


0 0