在python中工作,但是寻找一个通用结构。
我有一个函数,它接受长度为l的数组作为输入(例如,[0,0,0,…,0]和l个半正元素)。输入数组的每个元素都有一个正的最大值,例如,我有一个长度为L的数组,最大值是[10,5,4,…,7 ]。我想遍历函数的所有可能输入。
使用“广义计数”很容易做到这一点,但我想知道是否有更优雅的方法来做到这一点具体来说,我想要一些结构,比如:

meta_for vector in meta_range(max_vals):
    relevant_function( vector )

在功能上等同于:
for i_1 in range(max_vals[0]):
    for i_2 in range(max_vals[1]):
        ...
            for i_L in range(max_vals[L-1]):
                relevant_function( [i_1, i_2, ..., i_L] )

难点在于for循环的嵌套数依赖于L,因此不能硬编码。
像这样的东西存在吗?

最佳答案

您可以使用itertools.product来完成此操作:

import itertools
max_vals = [3, 2]
for I in itertools.product(*[range(m) for m in max_vals]):
    print I

印刷品
(0, 0)
(0, 1)
(1, 0)
(1, 1)
(2, 0)
(2, 1)

09-30 16:59
查看更多