在Ruby中撤消zip

时间:2014-03-12 17:33:42

标签: ruby

在Python中,我可以得到"反向"拉链的拉链

a = [1,2,3]
b = [4,5,6]
c = zip(a,b) # [(1,4),(2,5),(3,6)]

如果我从c开始,我可以使用以下内容获取ab

c = [(1,4),(2,5),(3,6)]
a, b = zip(*c)

然而,在Ruby中,似乎只有zip方法,因此我不确定我能以完全相同的方式做到这一点......

在Ruby中是否有某种类似的好习惯用于解压"解压缩"列表清单?


我意识到你可以做到

c[0].zip(*c[1..-1])

基本上在语义上是相同的东西,但它看起来并不像这样直观...

1 个答案:

答案 0 :(得分:10)

您可以使用Array#transpose

a = [1,2,3]
# => [1,2,3]
b = [4,5,6]
# => [4,5,6]
c = a.zip(b) 
# => [[1,4],[2,5],[3,6]]

d, e = c.transpose
# => [[1,2,3], [4,5,6]]
d
# => [1,2,3]
e
# => [4,5,6]