2016-04-01 18 views
3

におけるタプルの配列私はタプルの配列を持っていると仮定します?私はzip(*arr) == [(1, 3, 5), (2, 4, 6)]解凍ジュリア

ジュリアにおけるこれの同等は何を行うことができますのpythonで

arr = [(1,2), (3,4), (5,6)] 

+2

むしろ 'ジップ(ARR ...)|> collect': "正しさの証明" のように、' 'zip'内arr'をスプラットする必要性。 – amrods

+0

@amrodsが正しいです。それらの卑劣なスプラット '...'は、最初のコメントの先頭に逃げました。正確さのために、コメントを再コメントします。 –

+1

'zip(arr ...)|> collect'がそれを行うべきです。そして、少なくとも次のことを考えなければならない: 'collect(zip(arr ...)...))== arr'これは一般的に真実です。 –

答えて

7

あなたはzip()機能(docs here)を使って、ジュリアに同じことを達成することができます。 zip()は多くのタプルが使用できると予想しているので、引数を与えるにはsplatting operator...を使用する必要があります。また、Juliaではcollect()関数を使用してイテラブルを配列に変換する必要があります(必要な場合)。ここで

は、これらの機能は、アクションにあります。

arr = [(1,2), (3,4), (5,6)] 

# wtihout splatting 
collect(zip((1,2), (3,4), (5,6))) 

# Output is a vector of arrays: 
> ((1,3,5), (2,4,6)) 

# same results with splatting 
collect(zip(arr...)) 
> ((1,3,5), (2,4,6)) 
+0

大きな配列の場合、これは非常に遅いことに注意してください! https://github.com/JuliaLang/julia/issues/13930#issuecomment-155142306を参照してください。 –

3

ジュリア:

使用...

for r in zip(arr...) 
println(r) 
end