Я пытаюсь вычислить следующую двойную сумму, которая вычисляет вероятность того, что кто-то финиширует вторым в какой-то гонке, учитывая, что у нас есть шанс, что человек финиширует первым. X — длина списка бегунов, а также n!=i
Следующий код работает
def Scnd(mylist=[]):
sec=[]
for seconds in range(len(mylist)):
sum=0
for firsts in range(len(mylist)):
if firsts==seconds:
pass
else:
sum_second=mylist[firsts]*(mylist[seconds]/(1-mylist[firsts]))
sum+=sum_second
sec.append(sum)
print(sec)
#do something with the list
со следующим примером
alist=[0.4,0.25,0.2,0.15]
Scnd(alist)
результат будет
[0.303921568627451, 0.2732843137254902, 0.23529411764705882, 0.1875]
Я понимаю, что этот код очень медленный, и мне интересно, как сделать его быстрее (возможно, и более аккуратным в процессе).
Определенно аккуратнее, но, к сожалению, не очень быстро. Спасибо хоть