Вы уже сгенерировали список вероятностей - p_list
-, которые соответствуют каждому значению в my_list
, которое вы хотите сгенерировать.Pythonic способ сделать это через троичный оператор и понимание списка:
import random
my_list = [(x*y if random() < p else x-y) for p in p_list]
Если бы мы расширили это в правильный for
цикл:
my_list = []
for p in p_list:
if random() < p:
my_list.append(x*y)
else:
my_list.append(x-y)
Если бы мы хотели быть еще более питоническими в отношении calc1
и calc2
, мы могли бы превратить их в лямбды:
calc1 = lambda x,y: x*y
calc2 = lambda x,y: x-y
...
my_list = [calc1(x,y) if random() < p else calc2(x,y) for p in p_list]
или, в зависимости от того, как x
и y
различаются для вашегофункция (при условии, что они не являются статичными), вы даже можете сделать понимание в два этапа:
calc_list = [calc1 if random() < p else calc2 for p in p_list]
my_list = [calc(x,y) for calc in calc_list]