我想用隨機順序運行函數。它看起來像洗牌變量列表的「洗牌」功能。如何以隨機順序運行函數?
輸入:
def a():
print('a')
def b():
print('b')
def c():
print('c')
shuffle([a,b,c])
這是輸出什麼,我想:
a
b
c
或
a
c
b
或
c
b
a
or 如何以隨機順序運行函數?
我想用隨機順序運行函數。它看起來像洗牌變量列表的「洗牌」功能。如何以隨機順序運行函數?
輸入:
def a():
print('a')
def b():
print('b')
def c():
print('c')
shuffle([a,b,c])
這是輸出什麼,我想:
a
b
c
或
a
c
b
或
c
b
a
or 如何以隨機順序運行函數?
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()
或製作列表,並採取隨機:
import random
def a():
print('a')
def b():
print('b')
def c():
print('c')
my_list = [a, b, c]
random.choice(my_list)()
在循環中,這可能會(\ *)多次調用相同的函數。 (\ *)連續三次每次只被調用一次的機會實際上太小(如果我是對的話,9箇中的2個)稱之爲「可能」。 – usr2564301
這裏是我會怎麼做。基本上什麼四眼已經建議。 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()
'從隨機導入shuffle' ...看起來像你幾乎在那裏。 –
你有沒有試過編寫任何代碼?你也應該發佈。我正在考慮做一個字典,鍵是整數,值是函數引用,然後使用隨機整數在字典中查找函數。 – Brian