如何解压缩数组?

ste*_*ang 27 ruby arrays

如何在Ruby中解压缩一个数组,如Python中的这些示例:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zipped)
>>> x == list(x2) and y == list(y2)
Run Code Online (Sandbox Code Playgroud)

Dav*_*ton 42

用途transpose:

> zipped = x.zip(y)
=> [[1, 4], [2, 5], [3, 6]]
> x2, y2 = zipped.transpose
> x2
=> [1, 2, 3]
> y2
=> [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

  • 如果`x.size> y.size`,`transpose`与`zip`不完全相反,因为它会在`y2`的末尾添加`nil`.如果原始包含nil,则使用`zipped.transpose.map(&:compact)`恢复原件. (3认同)