2013-05-27 49 views
2

Python中有什麼方法可以隨機順序執行任何操作嗎?假設我想運行function1(),function2()function3(),但不是按順序執行,可以這樣做嗎?顯而易見的答案是做一個列表並隨機選擇它們,但是如何從列表中獲取函數名並實際運行它?按隨機順序做事情嗎?

回答

15

這其實很簡單。 Python函數只是對象,恰好是可調用的。因此,您可以將它們存儲在一個列表中,然後使用呼叫運營商(())呼叫它們。

製作功能列表,用random.shuffle()對它們進行整理,然後循環,調用它們。

to_call = [function1, function2, function3] 
random.shuffle(to_call) 
for f in to_call: 
    f() 

如果你想存儲返回值,你可以將它們添加到列表中,這將使一個list comprehension一個很好的例子:

returned_values = [f() for f in to_call]