在Python中有更简单的方法写6层嵌套for循环吗?

43 投票
11 回答
41608 浏览
提问于 2025-04-15 13:37

这个问题让我困扰了一段时间。有没有更简单的方法来写嵌套的 for 循环呢?比如我的代码是这样的:

  for y in range(3):
    for x in range(3):
      do_something()
      for y1 in range(3):
        for x1 in range(3):
          do_something_else()

有没有更简单的方法来实现这个?我知道这段代码是可以工作的,但如果你像我一样不使用两个空格来缩进,可能会遇到一些麻烦。

哦,在这个例子中只有四个嵌套的 for 循环,为了让事情简单一些。

11 个回答

10

当遇到这种程序逻辑时,我可能会把循环的顺序拆分成两个或更多的独立函数。

在Python中,还有一种技巧是尽量使用列表推导式,而不是使用循环。

15

在处理多维空间时,这种情况是比较常见的。我的解决办法是:

xy_grid = [(x, y) for x in range(3) for y in range(3)]

for x, y in xy_grid:
    # do something
    for x1, y1 in xy_grid:
        # do something else
60

如果你经常需要处理像你例子中的笛卡尔积,可能可以看看Python 2.6中的itertools.product这个工具——如果你用的是更早版本的Python,也可以自己写一个类似的功能。

from itertools import product
for y, x in product(range(3), repeat=2):
  do_something()
  for y1, x1 in product(range(3), repeat=2):
    do_something_else()

撰写回答