Ruby中两个数组的值映射问题?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (53)

我想知道是否有办法在Ruby中用Python来做我能做的事情:

sum = reduce(lambda x, y: x + y, map(lambda x, y: x * y, weights, data))

我有两个与权重和数据大小相同的数组,但是我似乎无法在Ruby中找到类似于map的函数,请减少我的工作量。

提问于
用户回答回答于

Ruby1.9示例可以进一步缩短:

weights.zip(data).map(:*).reduce(:+)

还请注意,在Ruby1.8中,如果需要ActiveSupport(来自Rails),可以使用:

weights.zip(data).map(&:*).reduce(&:+)
用户回答回答于

在Ruby1.9中:

weights.zip(data).map{|a,b| a*b}.reduce(:+)

在Ruby 1.8中:

weights.zip(data).inject(0) {|sum,(w,d)| sum + w*d }

扫码关注云+社区