gpt4 book ai didi

python - 避免嵌套 for 循环

转载 作者:IT老高 更新时间:2023-10-28 22:17:15 26 4
gpt4 key购买 nike

我正在尝试重复测试其他一些 Python 代码,使用六个不同参数的所有可能的值组合。对于每个参数,我想使用给定的最小值、最大值和步长迭代一系列值。

我设法编写了一些代码,例如:

for var1 in range(min1, max1, step1):
for var2 in range(min2, max2, step2):
for var3 in range(min3, max3, step3):
for var4 in range(min4, max4, step4):
for var5 in range(min5, max5, step5):
for var6 in range(min6, max6, step6):
do_something_with(var1, var2, var3, var4, var5, var6)

但我不喜欢代码嵌套得这么深。

如何避免嵌套多个循环?可以使用递归来完成吗? itertools.product 怎么样?我无法弄清楚这两种方法。


另请参见:Get the cartesian product of a series of lists?

这个问题和一些答案最初显示了 Python 2.x 的代码。它已被编辑,因为基本问题在 3.x 中仍然存在,具有相同的解决方案,但 xrange 不再存在 - range 是替代品。如需更多信息,请参阅 What is the difference between range and xrange functions in Python 2.X? .

最佳答案

product的使用方法如下:

x1 = range(min1, max1, step1)
x2 = range(min2, max2, step2)
x3 = range(min3, max3, step3)
...

for v1, v2, v3, v4, v5, v6 in itertools.product(x1, x2, x3, x4, x5, x6):
do_something_with(v1, v2, v3, v4, v5, v6)

或者更简洁一点:

ranges = [
range(min1, max1, step1),
range(min2, max2, step2),
range(min3, max3, step3),
...
]

for v1, v2, v3, v4, v5, v6 in itertools.product(*ranges):
do_something_with(v1, v2, v3, v4, v5, v6)

关于python - 避免嵌套 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11174745/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com