Python的itertools.permutations
已经做到了-
from itertools import permutations
for p in permutations("abcd",2):
print(p)
if p == ("b","c"):
break
print("done")
('a','b')
('a','c')
('a','d')
('b','a')
('b','c')
done
这是因为itertools.permutations
返回了一种惰性生成器,而不是预先计算所有排列。
print(permutations("abcd",2))
# <itertools.permutations object at 0x7f26ebd0bf40>
如果要所有个排列,则必须将它们收集在list
-
中
print(list(permutations("abcd",2)))
# [('a','b'),('a','c'),'d'),('b','a'),('c',('d','c')]
这就是程序中的样子
def solve (values,size,check):
for p in permutations(values,size):
if (check(p)):
return p
answer = \
solve \
( [ 5,3,9,-4,7 ] # nums to check,3 # permutation size,lambda p: sum(p) == 10 # find permutation that adds to 10
)
print(answer)
# (5,-4)
然后答案检查出来:5 + 9 + -4
等于10
!
,
这应该很简单:
def innerFunction(your_inputs):
#Generate Permutations & combinations
for permutation in all_permutations:
yield permutation
def OuterFunction():
for permutation in innerFunction():
if condition:
break;
本文链接:https://www.f2er.com/1820552.html