我尝试反复测试其他一些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的代码,它已经被编辑过了,因为Python 3.x中仍然存在这个基本问题,但是xrange
已经不存在了--range
是一个替代品,更多信息,请参见What is the difference between range and xrange functions in Python 2.X?。
3条答案
按热度按时间8ftvxx2r1#
下面介绍如何使用
product
:或者更简洁一点:
1qczuiv02#
您可能会使用
itertools.product
。但是六个VAR都在里面。
zvms9eto3#
可以使用
multiprocessing
和itertools.product
来加速和简化代码multiprocessing
可以加速您的任务(因为它是互斥任务)itertools.product
可以帮助您通过更有效的方式获得组合