Skip to main content
 首页 » 编程设计

python之如何摆脱多个嵌套的 for 循环

2025年05月04日18Leo_wl

我有一个 Python (3.2) 脚本,用于搜索具有我想要的属性的点。但它有这个丑陋的部分:

for x in range(0,p): 
  for y in range(0,p): 
    for z in range(0,p): 
      for s in range(0,p): 
        for t in range(0,p): 
          for w in range(0,p): 
            for u in range(0,p): 
              if isagoodpoint(x,y,z,s,t,w,u,p): 
                print(x,y,z,s,t,w,u) 
              else: 
                pass 

有什么我可以做的让它看起来更好一点吗?

请您参考如下方法:

您可以使用 itertools简化您的代码:

from itertools import product 
 
def print_good_points(p, dimensions=7): 
    for coords in product(range(p), repeat=dimensions): 
        args = coords + (p,) 
        if isagoodpoint(*args): 
            print(*coords) 

如前所述,这解决了您的问题;但是,我不确定您是否真的想在 isagoodpoint() 的参数中包含 p 。如果没有,您可能会丢失添加它的行:

from itertools import product 
 
def print_good_points(p, dimensions=7): 
    for coords in product(range(p), repeat=dimensions): 
        if isagoodpoint(*coords): 
            print(*coords) 

代码中的行

else: 
    pass 

顺便说一句,什么都不做。此外,range(0, p) 等同于 range(p)。

并且...以防万一您不熟悉在函数调用中使用 *:

http://docs.python.org/3.2/reference/expressions.html#index-34