2013-04-02 35 views
22

Làm thế nào để giải nén một mảng trong Ruby như ví dụ này bằng Python:Làm thế nào để giải nén một mảng?

>>> 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) 

Trả lời

36

Sử dụng transpose:

> zipped = x.zip(y) 
=> [[1, 4], [2, 5], [3, 6]] 
> x2, y2 = zipped.transpose 
> x2 
=> [1, 2, 3] 
> y2 
=> [4, 5, 6] 
+2

Nếu 'x.size> y.size', 'transpose' không phải là khá nghịch đảo của 'zip' vì nó sẽ thêm' nil 'vào cuối' y2'. Nếu không có bản gốc nào chứa nil sử dụng 'zipped.transpose.map (&: compact)', hãy khôi phục bản gốc. – dbenhur

+0

@dbenhur Đúng vậy. –

Các vấn đề liên quan