我有两个要同时迭代的数组。
我正在使用这个:
julia> xs = [1,2,3];
julia> ys = [4,5,6];
julia> for i in 1:length(xs)
x = xs[i]
y = ys[i]
@show x, y
end
(x, y) = (1, 4)
(x, y) = (2, 5)
(x, y) = (3, 6)
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来迭代 Julia 中的多个数组?
Dav*_*ela 10
使用zip
与元组解构一起:
julia> xs = [1,2,3];
julia> ys = [4,5,6];
julia> for (x, y) in zip(xs, ys)
@show x, y
end
(x, y) = (1, 4)
(x, y) = (2, 5)
(x, y) = (3, 6)
Run Code Online (Sandbox Code Playgroud)
zip
将在最短数组处停止迭代:
julia> for (x, y) in zip([1,2], [0,0,0])
@show x, y
end
(x, y) = (1, 0)
(x, y) = (2, 0)
Run Code Online (Sandbox Code Playgroud)
这种模式可以推广到任意数量的列表:
julia> for (x, y, z) in zip([1,2], [3,4], [5,6])
@show x, y, z
end
(x, y, z) = (1, 3, 5)
(x, y, z) = (2, 4, 6)
Run Code Online (Sandbox Code Playgroud)