Python避免了多个嵌套循环

Python避免了多个嵌套循环,python,python-2.7,Python,Python 2.7,我正在编写一个脚本,以找到要传递给方法的最佳参数。我已经创建了一个可能的参数值列表,我想迭代,我想知道是否可以避免为相同的参数编写嵌套循环 下面是代码的大致草图 param_1 = [1,2,3,5,10] param_2 = [100,200] param_3 = [True, False] param_4 = [True, False] . . for p1 in param_1: for p2 in param_2: . . do_somethin

我正在编写一个脚本,以找到要传递给方法的最佳参数。我已经创建了一个可能的参数值列表,我想迭代,我想知道是否可以避免为相同的参数编写嵌套循环

下面是代码的大致草图

param_1 = [1,2,3,5,10]
param_2 = [100,200]
param_3 = [True, False]
param_4 = [True, False]
.
.

for p1 in param_1:
  for p2 in param_2:
      .
      .
      do_something(p1,p2,...)
我想知道如何以更好的方式实现它。我更希望在解决方案中,我可以轻松地洗牌哪个参数停留在最外层的循环中。等等。

您可以使用:


这将创建所有可能参数组合的笛卡尔积,这些组合将传递给
do\u something
。您还可以修改
param_X
变量传递到
itertools.product
的顺序,这会影响参数传递到
do_something

的顺序。为什么要完全避免嵌套循环?然后我建议查看
itertools.compositions
itertools.permutations
,但必须先退一步,确保您以正确的方式解决问题。
对于itertools.product中的p(param_1,param_2,…):
有效,尽管它只是在相同的嵌套循环上涂上一层漆。我可以假设,对于嵌套循环,发生了什么,这是非常清楚的。它可能没有那么“优雅”,但我从来没有太担心过。有时候,多一点代码就更容易理解了。@River:很抱歉给你带来了困惑。我心目中的形象更好。在当前状态下,我有10个嵌套循环,我认为这是错误的。这里不关心速度
import itertools

for args in itertools.product(param_1, param_2, param_3, param_4):
    do_something(*args)