我昨天在做一个游戏,我必须遍历一个二维数组并找到任何标记为“d”的单元格的位置(其中单元格表示为“-”表示空白或“d”表示脏)。
我使用两个 for 循环来做到这一点:
def find_dirty_cells(board):
dirty_cells = []
for enum, row in enumerate(board):
for enumrow, cell in enumerate(row):
if cell == 'd':
dirty_cells.append((enum, enumrow))
return dirty_cells
但后来我认为构建一个生成器对象并返回它可能会更好,所以我写了这个:
def find_dirty_cells(board):
return ((enum, enumrow) for enumrow, cell in enumerate(row) for enum, row in enumerate(board) if cell == 'd')
但是第二个给了我不正确的数据作为响应(即,它没有找到“d”单元格)。我必须忽略一些简单的东西,使第二个不等于第一个,但我看不到它。我试图解决的真正问题是:有没有一种简单的方法可以让我的第一次尝试返回一个生成器?