2013-05-27 2 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] 
Смежные вопросы