首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在julia中将两个嵌套的for循环合并为一个for循环

在julia中将两个嵌套的for循环合并为一个for循环
EN

Stack Overflow用户
提问于 2017-10-17 04:26:44
回答 3查看 6.5K关注 0票数 4

我有两个for循环,我想将它们合并为一个嵌套循环:

我的循环是这样的:

代码语言:javascript
运行
复制
for i=1:m
    for j=1:n
        .....
    end
end

我试着把它们结合起来:

代码语言:javascript
运行
复制
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

所以我得到了这个结果:

代码语言:javascript
运行
复制
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

但我想得到这样的结果:

代码语言:javascript
运行
复制
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循环,这样它们运行的情况与两个循环运行的情况相同吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-17 05:28:45

编辑:

朱莉娅有很好的数学函数,divrem是正确的答案!

代码语言:javascript
运行
复制
 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

旧答案:

如果这是关于朱莉娅的问题,那怎么不去做呢?:)

代码语言:javascript
运行
复制
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

但是,您需要看到的性能和可读性比使用下面的代码要糟糕得多:

代码语言:javascript
运行
复制
for ai in 1:3
    for yi in 1:4 
        print(ai,",", yi,"; ")
    end
end
票数 3
EN

Stack Overflow用户

发布于 2017-10-17 04:45:58

是。

代码语言:javascript
运行
复制
for i=1:m, j=1:n
    .....
end
票数 15
EN

Stack Overflow用户

发布于 2017-10-17 04:46:26

如果实际使用只需要一次可迭代,则可以使用Iterators.product

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46782464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档