许多嵌套循环的替代方案?

时间:2018-06-28 08:22:11

标签: julia

出于科学目的,我必须一次又一次地对8个参数的函数进行评估,这些参数取值在一定范围内。

是否有比嵌套8个for循环的简单代码更聪明(和性能更好)的东西?

谢谢

1 个答案:

答案 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!