我有两个for循环,我想将它们组合成一个嵌套循环:
我的循环是这样的:
for i=1:m
for j=1:n
.....
end
end
我试图将它们组合在一起:
for ii = 1:n*m
ai = ii%n
yi = ii % m
if(ai == 0)
ai=6
end
if(yi == 0)
yi=5
end
println("ai=$ai , yi=$yi")
end
所以我得到了这个结果:
ai=1 , yi=1
ai=2 , yi=2
ai=3 , yi=3
ai=4 , yi=4
ai=5 , yi=5
ai=6 , yi=1
ai=1 , yi=2
ai=2 , yi=3
ai=3 , yi=4
ai=4 , yi=5
ai=5 , yi=1
ai=6 , yi=2
ai=1 , yi=3
ai=2 , yi=4
ai=3 , yi=5
ai=4 , yi=1
ai=5 , yi=2
ai=6 , yi=3
ai=1 , yi=4
ai=2 , yi=5
ai=3 , yi=1
ai=4 , yi=2
ai=5 , yi=3
ai=6 , yi=4
ai=1 , yi=5
ai=2 , yi=1
ai=3 , yi=2
ai=4 , yi=3
ai=5 , yi=4
ai=6 , yi=5
但我希望得到一些像这样的结果:
ai=1 , yi=1
ai=1 , yi=2
ai=1 , yi=3
ai=1 , yi=4
ai=1 , yi=5
ai=2 , yi=1
ai=2 , yi=2
ai=2 , yi=3
ai=2 , yi=4
ai=2 , yi=5
ai=3 , yi=1
ai=3 , yi=2
ai=3 , yi=3
ai=3 , yi=4
ai=3 , yi=5
ai=4 , yi=1
ai=4 , yi=2
ai=4 , yi=3
ai=4 , yi=4
ai=4 , yi=5
ai=5 , yi=1
ai=5 , yi=2
ai=5 , yi=3
ai=5 , yi=4
ai=5 , yi=5
ai=6 , yi=1
ai=6 , yi=2
ai=6 , yi=3
ai=6 , yi=4
ai=6 , yi=5
我不知道如何更改代码以获得一些嵌套结果。可以将两个for循环组合成一个for循环,以便它们在两个循环运行时运行相同吗?
答案 0 :(得分:4)
是
for i=1:m, j=1:n
.....
end
答案 1 :(得分:2)
如果您的实际使用只需要一次迭代,则可以使用Iterators.product
:
julia> for (i,j) in Iterators.product(1:4, 1:3)
println("i=$i , j=$j")
end
i=1 , j=1
i=2 , j=1
i=3 , j=1
i=4 , j=1
i=1 , j=2
i=2 , j=2
i=3 , j=2
i=4 , j=2
i=1 , j=3
i=2 , j=3
i=3 , j=3
i=4 , j=3
答案 2 :(得分:2)
修改强>
Julia有很好的数学函数, divrem 是正确的答案! :)
for ii = 1:n*m
ai, yi = divrem(ii-1, n) .+ (1,1)
print(ai,",", yi, " ")
end
# Output: 1,1 1,2 1,3 1,4 2,1 2,2 2,3 2,4 3,1 3,2 3,3 3,4
旧答案:
如果这是关于朱莉娅的问题,那么如何不去做。 :)
m=3;n=4;
for ii = 1:m*n
ai = div(ii-1, n) + 1 # division here
yi = (ii-1)%n + 1 # modulo here
print(ai,",", yi," ")
end
# Output: 1,1 1,2 1,3 1,4 2,1 2,2 2,3 2,4 3,1 3,2 3,3 3,4
但是你需要看到性能和可读性比这段代码更差:
for ai in 1:3
for yi in 1:4
print(ai,",", yi,"; ")
end
end