从Ruby中的两个数组映射值

Tim*_*man 23 ruby reduce maps

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

sum = reduce(lambda x, y: x + y, map(lambda x, y: x * y, weights, data))
Run Code Online (Sandbox Code Playgroud)

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

Lil*_*ard 14

@Michiel de Mare

您的Ruby 1.9示例可以进一步缩短:

weights.zip(data).map(:*).reduce(:+)
Run Code Online (Sandbox Code Playgroud)

另请注意,在Ruby 1.8中,如果需要ActiveSupport(来自Rails),您可以使用:

weights.zip(data).map(&:*).reduce(&:+)
Run Code Online (Sandbox Code Playgroud)


Mic*_*are 5

在Ruby 1.9中:

weights.zip(data).map{|a,b| a*b}.reduce(:+)
Run Code Online (Sandbox Code Playgroud)

在Ruby 1.8中:

weights.zip(data).inject(0) {|sum,(w,d)| sum + w*d }
Run Code Online (Sandbox Code Playgroud)