如何以随机顺序运行函数?

时间:2016-10-10 07:00:11

标签: python function python-3.x random

我想用随机顺序运行函数。它看起来像“shuffle”函数,它会改变变量列表。

输入:

a
c
b

这是我想要的输出:

c
b
a

{{1}}

{{1}}

等 如何以随机顺序运行函数?

3 个答案:

答案 0 :(得分:5)

random.shuffle是一个就地操作。因此,您需要单独保留列表并将其随机播放。

functions = [a, b, c]
shuffle(functions)

现在,函数被洗牌,您只需要执行它们

for func in functions:
    func()

你可以将它存储在一个函数中并像这样执行

def run_functions_in_random_order(*funcs):
    functions = list(funcs)
    shuffle(functions)
    for func in functions:
        func()

run_functions_in_random_order(a, b, c)

或者你可以简单地使用闭包中的函数,比如这个

def run_functions_in_random_order(*funcs):
    def run():
        functions = list(funcs)
        shuffle(functions)
        for func in functions:
            func()
    return run

random_exec = run_functions_in_random_order(a, b, c)

random_exec()
random_exec()
random_exec()

答案 1 :(得分:1)

或制作一份清单并随机选择:

import random  

def a():
    print('a')

def b():
    print('b')

def c():
    print('c')  

my_list = [a, b, c] 
random.choice(my_list)()

答案 2 :(得分:1)

我将如何做。基本上 thefourtheye 建议了什么。 Run this Code

from random import shuffle

def a():
    print('a')

def b():
    print('b')

def c():
    print('c')

def main():
    lis = [a,b,c]

    shuffle(lis)

    for i in lis:
        i()