假设我有一堆函数,每个函数都标记为doThing1,doThing2等,直到doThing10。我想调用这些函数的所有可能组合。不必调用每个函数,但每个函数只能调用一次。我怎么能在python中以高效的方式实现它?
答案 0 :(得分:2)
使用itertools.permutations(iterable\[, r\])
获取所有排列并将您的函数放入列表中。
以下是一个例子:
import itertools
def doThing1():
print "thing 1"
def doThing2():
print "thing 2"
def doThing3():
print "thing 3"
functions = [doThing1, doThing2, doThing3]
for func_list in itertools.permutations(functions):
for func in func_list:
func()
以下是输出:
$ python permutations.py
thing 1
thing 2
thing 3
thing 1
thing 3
thing 2
thing 2
thing 1
thing 3
thing 2
thing 3
thing 1
thing 3
thing 1
thing 2
thing 3
thing 2
thing 1