我一直在把一些Ruby代码翻译成Python,但这把我难倒了。
有人能分析一下这个inject
函数在做什么吗?
val = (0..seq.size - 2).inject(1.0) do |v, i|
v * rates[seq[i]][seq[i+1]]
end
发布于 2018-06-06 07:38:39
在伪代码中,给定一个2D数组“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]
在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)
发布于 2018-06-06 06:39:51
它等同于
val = 1.0
(0..seq.size - 2).each do |i|
val = val * rates[seq[i]][seq[i+1]]
end
https://stackoverflow.com/questions/50709676
复制相似问题