9
我々は次のようにアレイのzip
メソッドを使用して、同時に2つの配列を反復処理することができます。3つの配列を同時に反復することはできますか?
@budget.zip(@actual).each do |budget, actual|
...
end
は、3つの配列を反復処理することが可能ですか?同じようにtranspose
メソッドを使用できますか?
我々は次のようにアレイのzip
メソッドを使用して、同時に2つの配列を反復処理することができます。3つの配列を同時に反復することはできますか?
@budget.zip(@actual).each do |budget, actual|
...
end
は、3つの配列を反復処理することが可能ですか?同じようにtranspose
メソッドを使用できますか?
>> [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]
注:
あなたはzipとeach
を必要としない、それが取りますブロック。
機能表現も可能です。たとえば、map
:sums = xs.zip(ys, zs).map { |x, y, z| x + y + z }
を使用します。
任意の数のアレイについては、xss[0].zip(*xss[1..-1])
または単にxss.transpose
を実行できます。
**ヘッドエコード** –
おかげで本当にありがとうございました。 –
+1 'zip'、' transpose'やビルトインのセット操作による配列操作は、Rubyの超強力なツールです。多くのデータを迅速に処理できます。 –