我想知道是否有一种方法可以用Ruby用Python做下面的事情:
sum = reduce(lambda x, y: x + y, map(lambda x, y: x * y, weights, data))
我有两个大小相等的数组,权重和数据相同,但我似乎找不到一个类似于Ruby中的map的函数,reduce。
发布于 2008-08-07 01:29:06
@Michiel de Mare
您的Ruby 1.9示例可以进一步缩短:
weights.zip(data).map(:*).reduce(:+)
还要注意的是,在Ruby1.8中,如果你需要ActiveSupport (来自Rails),你可以使用:
weights.zip(data).map(&:*).reduce(&:+)
发布于 2008-08-07 01:22:37
在Ruby 1.9中:
weights.zip(data).map{|a,b| a*b}.reduce(:+)
在Ruby 1.8中:
weights.zip(data).inject(0) {|sum,(w,d)| sum + w*d }
发布于 2008-08-06 12:15:51
Array.zip函数对数组进行元素级组合。它不像Python语法那样简洁,但这里有一种方法可以使用:
weights = [1, 2, 3]
data = [4, 5, 6]
result = Array.new
a.zip(b) { |x, y| result << x * y } # For just the one operation
sum = 0
a.zip(b) { |x, y| sum += x * y } # For both operations
https://stackoverflow.com/questions/3281
复制相似问题