Ben dizilerini dizisi olduğunu varsayalım: piton ileUnzip bir Julia
arr = [(1,2), (3,4), (5,6)]
Ben zip(*arr) == [(1, 3, 5), (2, 4, 6)]
Julia bu eşdeğer nedir yapabilir?
Ben dizilerini dizisi olduğunu varsayalım: piton ileUnzip bir Julia
arr = [(1,2), (3,4), (5,6)]
Ben zip(*arr) == [(1, 3, 5), (2, 4, 6)]
Julia bu eşdeğer nedir yapabilir?
Sen zip()
fonksiyonunu (docs here) kullanarak Julia aynı şeyi elde edebilirsiniz. zip()
, birçok tuplesin çalışmasını bekler, böylece argümanlarınızı sağlamak için splatting operator...
'u kullanmanız gerekir. Ayrıca Julia'da collect()
işlevini kullanmanız gerekir; böylece yinelenenlerinizi bir diziye dönüştürün (eğer isterseniz). İşte
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))
Büyük diziler için bu çok yavaş olduğunu unutmayın! Bakınız https://github.com/JuliaLang/julia/issues/13930#issuecomment-155142306 –
Julia:
kullanımı ...
for r in zip(arr...)
println(r)
end
yerine 'zip (arr ...) |> collect': "doğruluk kanıtı" olduğu gibi zip'' dahilinde arr' 'uyarıyla ihtiyacı . – amrods
@amrods haklı. Bu sinir bozucu splat '...' ilk yorum üstüne kaymıştır. Doğruluk için, yorumu tekrar yorumlayacağız. –
'zip (arr ...) |> topla 'bunu yapmalı. Ve en azından bir kere aşağıdakileri düşünmeliyiz: 'topla (zip (zip (arr ...) ...)) == arr' genellikle doğrudur. –