簡體   English   中英

在Ruby中使用2個數組是否有慣用的方法?

[英]Is there an idiomatic way to operate on 2 arrays in Ruby?

a = [3, 4, 7, 8, 3]
b = [5, 3, 6, 8, 3]

假設數組長度相同,是否有辦法使用each或其他慣用方法從兩個數組的每個元素中獲取結果? 沒有使用櫃台?

例如,要獲得每個元素的乘積: [15, 12, 42, 64, 9]

(0..a.count - 1).each do |i| 太丑了......

Ruby 1.9.3

使用Array.zip怎么樣:

>> a = [3,4,7,8,3]
=> [3, 4, 7, 8, 3]
>> b = [5,3,6,8,3]
=> [5, 3, 6, 8, 3]
>> c = []
=> []
>> a.zip(b) do |i, j| c << i * j end
=> [[3, 5], [4, 3], [7, 6], [8, 8], [3, 3]]
>> c
=> [15, 12, 42, 64, 9]

注意:我不是一個Ruby程序員,所以我為任何我已經踐踏過的習語道歉。

出於性能原因, zip可能更好,但transpose保持對稱性並且更容易理解。

[a, b].transpose.map{|a, b| a * b}
# => [15, 12, 42, 64, 9]

ziptranspose之間的區別在於,如果數組的長度不同,前者將nil作為默認值插入,而后者則引發錯誤。 根據具體情況,你可能會偏愛另一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM