Python でも使われる enumerate(), zip() の他にもいろいろある。
julia> A = 1:5
julia> B = ["one", "two", "three", "four", "five"]
タプルで取り出す場合は,変数 1 個を使う。取り出した後はタプルとして使ってもよいし,ここの変数へバラしてから使ってもよい。
julia> for c in zip(A, B)
a, b = c
println("$c, $a, $b")
end
(1, "one"), 1, one
(2, "two"), 2, two
(3, "three"), 3, three
(4, "four"), 4, four
(5, "five"), 5, five
各要素へ取り込む場合は,Python と異なり,( ) でくくらないとエラーになる。
julia> for (a, b) in zip(A, B)
println("$a, $b")
end
1, one
2, two
3, three
4, four
5, five
enumerate() も,取り出し変数は ( ) でくくること。
julia> for (index, value) in enumerate(B)
println("$index, $value")
end
1, one
2, two
3, three
4, four
5, five
面白そうな iterator を一つあげておく。汎用の outer 関数を作るときに使えるかな??
julia> a = collect(Iterators.product(1:2, 3:5))
2×3 Array{Tuple{Int64,Int64},2}:
(1, 3) (1, 4) (1, 5)
(2, 3) (2, 4) (2, 5)
julia> println(a)
[(1, 3) (1, 4) (1, 5); (2, 3) (2, 4) (2, 5)]
julia> for x in a
println(x)
end
(1, 3)
(2, 3)
(1, 4)
(2, 4)
(1, 5)
(2, 5)