高效的双for循环

Efficient double for loop

执行如下所示的双重 for 循环的最有效(或 Pythonic 方式)是什么(我知道如何为列表理解执行此操作,但不知道如何返回单个对象):

for i in range(0, 9):
    for j in range(0, 9):
        if self.get(i)[j] == "1":
            return (i, j)
>>> next(((i, j)
           for i in range(0, 9)
           for j in range(0, 9)
           if self.get(i)[j] == "1"), None)

如果没有找到,这将 return None

请参阅 next 的文档。

第一个参数是生成器。如果您提供 None 作为第二个参数,则需要它。否则你可以跳过额外的括号。如果您不提供 None,但如果未找到任何内容,它会抛出 StopIteration 异常。