【发布时间】:2015-04-05 19:45:35
【问题描述】:
使用 Python 工作,但正在寻找一般结构。
我有一个函数,它将长度为 L 的数组作为输入(例如,[0,0,0,...,0] 和 L 个半正元素)。输入数组的每个元素都有一个正的最大值,例如,我有一个长度为 L 的数组,max_vals = [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,因此不能硬编码。
这样的事情存在吗?
【问题讨论】:
-
听起来您正在寻找计算power set。
-
是的。简单的方法是递归。
-
你能举一个输入和期望输出的例子吗?
-
@MattBall,我很难看出它们是如何相同的。我不是要迭代许多不同长度的向量,只是要迭代具有一般长度的向量。
标签: python algorithm loops nested-loops