我一直在将一些Ruby代码翻译成Python,但这让我很难过。
有人可以分解这个inject
函数正在做什么吗?
val = (0..seq.size - 2).inject(1.0) do |v, i|
v * rates[seq[i]][seq[i+1]]
end
答案 0 :(得分:2)
相当于
val = 1.0
(0..seq.size - 2).each do |i|
val = val * rates[seq[i]][seq[i+1]]
end
答案 1 :(得分:2)
在伪代码中,给定2D数组“rates”和单个数组“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]
在python中:
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)
答案 2 :(得分:2)