如何创建可根据变量n生成可变层数双层嵌套for循环的函数
实现方案
你可以用itertools.product生成动态层级的笛卡尔积,完全匹配你给出的嵌套循环逻辑,完整代码如下:
from itertools import product def function(n, max_anz, max_size_, step): z = 0 # 单组循环单元对应一组a_i、x_i的遍历范围 single_unit = [ range(max_anz + 1), range(0, max_size_, step) ] # 拼接生成n组循环单元的总遍历范围 all_ranges = single_unit * n # 遍历所有符合嵌套规则的组合 for item in product(*all_ranges): print(list(item)) z += 1 print(z)
逻辑说明
- 每层嵌套的固定逻辑都是先遍历
a_i的范围range(max_anz + 1),再遍历x_i的范围range(0, max_size_, step),n层嵌套等价于把n个这样的双循环组合做笛卡尔积 itertools.product生成组合的顺序和手动写多层循环的输出顺序完全一致,计数结果z也和原逻辑完全相同
内容的提问来源于stack exchange,提问作者Ousbond
相关产品推荐
相关产品推荐

