在 Ruby 中映射两个数组的值
我想知道是否有一种方法可以在 Ruby 中使用 Python 执行以下操作:
sum = reduce(lambda x, y: x + y, map(lambda x, y: x * y, weights, data))
我有两个大小相等、权重和数据相同的数组,但我似乎找不到类似于 Ruby 中的 map 的函数,reduce我有工作。
I'm wondering if there's a way to do what I can do below with Python, in Ruby:
sum = reduce(lambda x, y: x + y, map(lambda x, y: x * y, weights, data))
I have two arrays of equal sizes with the weights and data but I can't seem to find a function similar to map in Ruby, reduce I have working.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
@Michiel de Mare
您的 Ruby 1.9 示例可以进一步缩短:
另请注意,在 Ruby 1.8 中,如果您需要 ActiveSupport(来自 Rails),您可以使用:
@Michiel de Mare
Your Ruby 1.9 example can be shortened a bit further:
Also note that in Ruby 1.8, if you require ActiveSupport (from Rails) you can use:
在 Ruby 1.9 中:
在 Ruby 1.8 中:
In Ruby 1.9:
In Ruby 1.8:
Array.zip 函数对数组进行元素组合。 它不像 Python 语法那么干净,但您可以使用以下一种方法:
The Array.zip function does an elementwise combination of arrays. It's not quite as clean as the Python syntax, but here's one approach you could use:
Ruby 有一个
map
方法(又名collect
方法),它可以应用于任何Enumerable
对象。 如果numbers
是数字数组,则 Ruby 中的以下行:相当于 Python 中的以下行:
有关更多详细信息,请参阅 此处 或 此处。
Ruby has a
map
method (a.k.a. thecollect
method), which can be applied to anyEnumerable
object. Ifnumbers
is an array of numbers, the following line in Ruby:is the equivalent of the following line in Python:
For more details, see here or here.
也适用于 2 个以上数组的映射替代方案:
也可以将其添加到数组中:
An alternative for the map that works for more than 2 arrays as well:
This could also be added to Array: