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

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

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

我想要这个:

 xa yb zc 

谢谢。

数组对象上的zip方法:

 a.zip b do |items| puts items[0], items[1] end 

另一种方法是使用each_with_index 。 快速基准测试表明,这比使用zip稍快一些。

 a.each_with_index do |item, index| puts item, b[index] end 

基准测试:

 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 

结果:

  user system total real ewi 7.890000 0.000000 7.890000 ( 7.887574) zip 10.920000 0.010000 10.930000 ( 10.918568) 
 >> a=["x","y","z"] => ["x", "y", "z"] >> b=["a","b","c"] => ["a", "b", "c"] >> a.zip(b) => [["x", "a"], ["y", "b"], ["z", "c"]] >> 

请参阅Python的“zip”内置的什么是Ruby等价物?

我喜欢在使用Ruby迭代多个数组时使用转置。 希望这可以帮助。

 bigarray = [] bigarray << array_1 bigarray << array_2 bigarray << array_3 variableName = bigarray.transpose variableName.each do |item1,item2,item3| # do stuff per item # eg puts "item1" puts "item2" puts "item3" end