Tag: 转置

为什么Ruby在做同样的事情时会有拉链和转置?

他们似乎做同样的事情。 g = [{ a: “A” }, { b: “B” }] r = [{ x: “X” }, { y: “Y” }] g.zip(r) # => [[{:a=>”A”}, {:x=>”X”}], [{:b=>”B”}, {:y=>”Y”}]] [g,r].transpose # => [[{:a=>”A”}, {:x=>”X”}], [{:b=>”B”}, {:y=>”Y”}]] 为什么有两种方法?

如何转置不同大小的rubyarrays?

我有一个数组: arr=[[1,2,3],[4,5],[6]], 我有以下代码: arr.transpose 但它不起作用,如何解决? 我正进入(状态 [[1,2,3],[4,5],[6]].transpose IndexError: element size differs (2 should be 3) from (irb):13:in `transpose’ from (irb):13 from /home/durrant 我的解决方案 arr.reduce(&:zip).map(&:flatten) 输出: [[1, 4, 6], [2, 5, nil], [3, nil, nil]]