在ruby中选择二维数组的列方式

Muk*_*dir 5 ruby multidimensional-array

我有一个2d数组A = [[a1,a2,a3],[b1,b2,b3],[c1,c2,c3]]. 我想以列方式访问此数组.类似的东西 -

A[all][0]
-> [a1,b1,c1]
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Aru*_*hit 9

使用#transpose方法如下:

A.transpose.each do |ary|
   # your code
end
Run Code Online (Sandbox Code Playgroud)

根据你的评论,我建议使用Matrix课程.一旦创建了一个Matrix对象,就可以按列方式访问它的元素.

require 'matrix'

A = [['a1','a2','a3'],['b1','b2','b3'],['c1','c2','c3']]

mat = Matrix[ *A ]
mat.column(1).to_a # => ["a2", "b2", "c2"]
Run Code Online (Sandbox Code Playgroud)


Rei*_*ard 7

另一种选择是使用Array#map:

A = [["a1","a2","a3"],["b1","b2","b3"],["c1","c2","c3"]]
=> [["a1", "a2", "a3"], ["b1", "b2", "b3"], ["c1", "c2", "c3"]]
>> col = 0
=> 0
>> A.map{|a| a[col]}
=> ["a1", "b1", "c1"]
Run Code Online (Sandbox Code Playgroud)

可以根据需要转换为方法.