如何在 Julia 的一行中创建两个嵌套的 for 循环

log*_*ick 5 julia

我曾多次看到有人希望将两个 for 循环放在彼此嵌套的同一行上的情况。

只是为了确认一下,这在 Julia 中是否可行,如果可以,它看起来像什么?谢谢!

Dav*_*ela 13

正确,Julia 允许您简洁地表达嵌套for循环

例如,考虑按列顺序填充 3x3 矩阵:

julia> xs = zeros(3,3)
3×3 Array{Float64,2}:
 0.0  0.0  0.0
 0.0  0.0  0.0
 0.0  0.0  0.0

julia> let a = 1
           for j in 1:3, i in 1:3
               xs[i,j] = a
               a += 1
           end
       end

julia> xs
3×3 Array{Float64,2}:
 1.0  4.0  7.0
 2.0  5.0  8.0
 3.0  6.0  9.0
Run Code Online (Sandbox Code Playgroud)

上面的循环相当于这个更详细的版本:

julia> let a = 1
           for j in 1:3
               for i in 1:3
                   xs[i,j] = a
                   a += 1
               end
           end
       end
Run Code Online (Sandbox Code Playgroud)

这种语法甚至支持更高维度(!):

julia> for k in 1:3, j in 1:3, i in 1:3
           @show (i, j, k)
       end
Run Code Online (Sandbox Code Playgroud)