我有两个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循环,这样它们运行的情况与两个循环运行的情况相同吗?
发布于 2017-10-17 05:28:45
编辑:
朱莉娅有很好的数学函数,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
发布于 2017-10-17 04:45:58
是。
for i=1:m, j=1:n
.....
end
发布于 2017-10-17 04:46:26
如果实际使用只需要一次可迭代,则可以使用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
https://stackoverflow.com/questions/46782464
复制相似问题