给定上限列表:B1, B2, .. BN;
依赖函数:f1, ..., fN-1,
我想知道是否有使用 itertools 或 python 中其他类的方法:
for i1 in range(0, B1):
for i2 in range(f1(i1), B2): ...
for iN in range(fN-1(iN-1), BN)
dostuff(i1, i2, ... iN)
哪里有N层嵌套?
我想像这样使用这个辅助函数:
dependentProducts(Bs, fs, dostuff),
它返回一个列表或可迭代的
理想情况下,实现应该是迭代的而不是递归的。
最佳答案
使用@LaurentLAPORTE 设置的迭代解决方案。将这段代码放在他的下面,它应该可以工作。我的 args
是一堆参数,只要它已满,就会馈送到 dostuff
中。实际解决方案是中间部分,顶部和底部只是测试。
stefan = []
def dostuff(*args):
stefan.append(list(args))
args = [-1]
while args:
n = len(args)
args[-1] += 1
if args[-1] >= B[n-1]:
args.pop()
elif n == len(B):
dostuff(*args)
else:
args.append(F[n](args[-1]) - 1)
assert expected == stefan
关于python - 将 itertools 用于具有依赖性的不同范围的任意数量的嵌套循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39109537/