出于科学目的,我必须一次又一次地对8个参数的函数进行评估,这些参数取值在一定范围内。
是否有比嵌套8个for循环的简单代码更聪明(和性能更好)的东西?
谢谢
答案 0 :(得分:6)
您可以使用Iterators.product
,它结合了多个迭代器,如下所示:
julia> for (i, j, k) in Iterators.product(1:2, 5:6, -2:-1)
println("hi, $i, $j and $(k)!")
end
hi, 1, 5 and -2!
hi, 2, 5 and -2!
hi, 1, 6 and -2!
hi, 2, 6 and -2!
hi, 1, 5 and -1!
hi, 2, 5 and -1!
hi, 1, 6 and -1!
hi, 2, 6 and -1!
您还可以将其作为元组返回,以供索引,如下所示:
julia> for K in Iterators.product(1:2, 5:6, -2:-1)
println("hi, $(K[1]), $(K[2]) and $(K[3])!")
end
hi, 1, 5 and -2!
hi, 2, 5 and -2!
hi, 1, 6 and -2!
hi, 2, 6 and -2!
hi, 1, 5 and -1!
hi, 2, 5 and -1!
hi, 1, 6 and -1!
hi, 2, 6 and -1!