我昨天正在进行一场游戏,我必须遍历一个二维阵列并找到标记为“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’单元格).必须有一些简单的东西,我忽略了第二个不等于第一个,但我看不到它.我试图解决的真正问题是:有一种简单的方法让我的第一次尝试返回发电机吗?