高效的双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
异常。
执行如下所示的双重 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
异常。