替代Python中的循环嵌套

dav*_*enz 3 python for-loop nested-loops

我已经读过Python的一个关键信念是flat>嵌套.但是,如果我有几个变量计数,多个for循环的替代方法是什么?我的代码用于计算网格总和,如下所示:

def horizontal():
    for x in range(20):
        for y in range(17):
            temp = grid[x][y: y + 4]
            sum = 0
            for n in temp:
                sum += int(n)
            print sum # EDIT: the return instead of print was a mistype
Run Code Online (Sandbox Code Playgroud)

在我看来,它似乎太嵌套了.首先,考虑到Python中的许多嵌套循环(我之前已经看过2个嵌套循环).其次,如果嵌套太多,编写此代码的另一种方法是什么?

Joh*_*ooy 10

from itertools import product

def horizontal():
    for x, y in product(range(20), range(17)):
        print 1 + sum(int(n) for n in grid[x][y: y + 4])
Run Code Online (Sandbox Code Playgroud)

你应该使用这个sum功能.当然你不能用变量遮住它,所以我把它改成了my_sum

  • @Balthamos,对于小范围,`range`更快,而且Python3中没有`xrange`.OP没有提到他们使用的是哪个版本 (2认同)