我有一个传统的for循环,我想转换为列表理解,更像Pythonic。对于内部循环,我只需要一个结果,然后执行外循环的下一次迭代。
for tableStartIdx in tableStartIdxs:
for lineIdx, line in enumerate(lines[tableStartIdx:], tableStartIdx):
if '|}' == line:
print(lines[lineIdx])
return
这是我最接近列表理解的地方:
next((lineIdx for tableStartIdx in tableStartIdxs for lineIdx, line in enumerate(lines[tableStartIdx:], tableStartIdx) if '|}' == line), -1)
然而,当我识别第一个结果时,这会停止外循环。我想我会缩短next()
函数中包含的内容,但这会导致"如果不是唯一的参数,则生成器表达式必须加括号。"有道理。
我对列表理解能做什么甚至可能?或者我只是遗漏了一些明显的东西?