2

Pythonでランダムな順序で物事を行う方法はありますか? function1()function2()、およびを実行したいとしますfunction3()が、必ずしもこの順序で実行する必要はありません。当然の答えは、リストを作成してランダムに選択することですが、リストから関数名を取得して実際に実行するにはどうすればよいでしょうか。

4

1 に答える 1

15

これは実際には非常に簡単です。Python 関数は単なるオブジェクトであり、たまたま呼び出し可能です。したがって、それらをリストに保存してから、呼び出し演算子 ( ()) を使用して呼び出すことができます。

関数のリストを作成し、それらを でシャッフルしてrandom.shuffle()から、ループして呼び出します。

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

返された値を保存したい場合は、それらをリストに追加できます。これは、リスト内包表記の適切なケースになります。

returned_values = [f() for f in to_call]
于 2013-05-27T15:42:18.943 に答える