如何执行嵌套迭代?

时间:2017-03-14 13:21:47

标签: julia

我定义了一个函数m(r,T,a,w),我有变量r,T,w.的向量 我想要做的是获取每个向量的第一个元素并迭代我的函数for a in 1:T,然后取总和并对这些向量的第二个元素重复此迭代,依此类推。 最后我想要一个由所有总和组成的向量。 我很感激你的帮助。

到目前为止我尝试了什么:

WRLE分别是wrT变量的向量

M = []
for w in W, r in R, T in LE 
    for a in 1:T
    MM=sum(m(r,T,a,w))
    push!(M,MM)
end
end
显然朱莉娅不会意识到我想做什么

3 个答案:

答案 0 :(得分:4)

语法:

for w in W, r in R, T in LE
    ...

不会同时迭代向量。相反,它等同于产品:

for w in W
    for r in R
        for T in LE
            ...

听起来你想同时迭代这三个向量。在这种情况下,您可以使用zip

for (w,r,T) in zip(W,R,LE)
    ...

答案 1 :(得分:0)

马特的回答是正确的,但你可能想要改进一些其他的东西,比如类型,并把它放在一个函数中,这样它就不会使用全局变量。你知道这笔钱的类型是什么吗? Float64可以使用,还是Int64? 例如:

function myfun(W, R, LE)
    M = Vector{Float64}()
    for (w, r, T) in zip(W, R, LE), a in T
        push!(M, sum(m(r, T, a, w)))
    end
    M
end

答案 2 :(得分:0)

感谢您提供非常有用的评论。我设法编写了我想要的代码

  MM = Vector{Float64}()
    M = Vector{Float64}()
    for (w, r, T) in zip(W, R, LE)
        for a in 1:T
          push!(MM, m(r,T,a,w))
        end
          push!(M,sum(MM))
    end