迭代多个数组的最佳方法是什么?

m.s*_*nus 7 ruby arrays loops

在Ruby中迭代多个数组的最佳方法(性能方面的美观和高效)是什么?假设我们有一个数组:

a=[x,y,z]
b=['a','b','c']
Run Code Online (Sandbox Code Playgroud)

我想要这个:

x a
y b
z c
Run Code Online (Sandbox Code Playgroud)

谢谢.

Dyl*_*kow 6

另一种方法是使用each_with_index.快速基准测试显示,这比使用zip稍快.

a.each_with_index do |item, index|
  puts item, b[index]
end
Run Code Online (Sandbox Code Playgroud)

基准测试:

a = ["x","y","z"]
b = ["a","b","c"]

Benchmark.bm do |bm|
  bm.report("ewi") do
    10_000_000.times do
      a.each_with_index do |item, index|
        item_a = item
        item_b = b[index]
      end
    end
  end
  bm.report("zip") do
    10_000_000.times do
      a.zip(b) do |items|
        item_a = items[0]
        item_b = items[1]
      end
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

结果:

      user     system      total        real
ewi  7.890000   0.000000   7.890000 (  7.887574)
zip 10.920000   0.010000  10.930000 ( 10.918568)
Run Code Online (Sandbox Code Playgroud)


kel*_*oti 4

数组对象上的方法zip

a.zip b do |items|
    puts items[0], items[1]
end
Run Code Online (Sandbox Code Playgroud)

  • 你也可以这样`a.zip(b) { |first, secondary| p [first, secondary] }` 而不是索引 `items`。 (3认同)