昨日、2 次元配列をトラバースし、「d」とマークされたセルの場所を見つける必要があるゲームに取り組んでいました (セルは、空白の場合は「-」、ダーティの場合は「d」で表されます)。
2 つの 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')
しかし、2 番目の応答では、間違ったデータが返されます (つまり、「d」セルが見つかりません)。2 番目が 1 番目と等しくないという、私が見落としている単純な何かがあるに違いありませんが、それはわかりません。私が解決しようとした本当の質問はこれです:私の最初の試みがジェネレーターを返すようにする簡単な方法はありますか?