2013-06-12 5 views

答えて

28
>> [1,2,3].zip(["a","b","c"], [:a,:b,:c]) { |x, y, z| p [x, y, z] } 
[1, "a", :a] 
[2, "b", :b] 
[3, "c", :c] 

transposeも、しかし作品zipとは異なり、それはすぐに新しい配列を作成します。

>> [[1,2,3], ["a","b","c"], [:a,:b,:c]].transpose.each { |x, y, z| p [x, y, z] } 
[1, "a", :a] 
[2, "b", :b] 
[3, "c", :c] 

注:

  • あなたはzipeachを必要としない、それが取りますブロック。

  • 機能表現も可能です。たとえば、mapsums = xs.zip(ys, zs).map { |x, y, z| x + y + z }を使用します。

  • 任意の数のアレイについては、xss[0].zip(*xss[1..-1])または単にxss.transposeを実行できます。

+3

**ヘッドエコード** –

+0

おかげで本当にありがとうございました。 –

+0

+1 'zip'、' transpose'やビルトインのセット操作による配列操作は、Rubyの超強力なツールです。多くのデータを迅速に処理できます。 –

関連する問題