首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ruby中两个数组的映射值

Ruby中两个数组的映射值
EN

Stack Overflow用户
提问于 2008-08-06 11:02:21
回答 6查看 14.3K关注 0票数 23

我想知道是否有一种方法可以用Ruby用Python做下面的事情:

代码语言:javascript
复制
sum = reduce(lambda x, y: x + y, map(lambda x, y: x * y, weights, data))

我有两个大小相等的数组,权重和数据相同,但我似乎找不到一个类似于Ruby中的map的函数,reduce。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-08-07 01:29:06

@Michiel de Mare

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

代码语言:javascript
复制
weights.zip(data).map(:*).reduce(:+)

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

代码语言:javascript
复制
weights.zip(data).map(&:*).reduce(&:+)
票数 14
EN

Stack Overflow用户

发布于 2008-08-07 01:22:37

在Ruby 1.9中:

代码语言:javascript
复制
weights.zip(data).map{|a,b| a*b}.reduce(:+)

在Ruby 1.8中:

代码语言:javascript
复制
weights.zip(data).inject(0) {|sum,(w,d)| sum + w*d }
票数 5
EN

Stack Overflow用户

发布于 2008-08-06 12:15:51

Array.zip函数对数组进行元素级组合。它不像Python语法那样简洁,但这里有一种方法可以使用:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档