调用每种可能的功能组合

时间:2017-03-30 21:06:43

标签: python algorithm permutation computer-science combinatorics

假设我有一堆函数,每个函数都标记为doThing1,doThing2等,直到doThing10。我想调用这些函数的所有可能组合。不必调用每个函数,但每个函数只能调用一次。我怎么能在python中以高效的方式实现它?

1 个答案:

答案 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