В псевдокоде, с учетом двумерного массива "rate" и одного массива "seq":
val = 1.0
for each consecutive pair(s,t) of values in seq:
val = product * rates[s][t]
Так что если seq = [1,2,3]
, это дает произведение rates[1][2] * rates[2][3]
Inпитон:
val = 1.0
for i in range(len(seq)-1):
val*=rates[seq[i]][seq[i+1]]
или
reduce(lambda v,i: v*rates[seq[i]][seq[i+1]], range(len(seq)-1), 1.0)