Python:在单行中中断for循环以实现单行与块代码的循环和性能

Ale*_*lex 2 python

我有以下代码,我想知道是否可以将其转换为单行循环?

for a,b in myList :
     sth = calcSth(a, b)
     if sth > 60 :
           return True

return False
Run Code Online (Sandbox Code Playgroud)

另一个问题是:单行循环和块编码循环的性能是否有所不同?

Jea*_*bre 5

您可以用此oneliner替换整个循环(单行使用时,这真的是oneliner if吗?):

if any(calcSth(a,b)>60 for a,b in myList): return True
Run Code Online (Sandbox Code Playgroud)

anya,b符合条件后将立即停止测试。

同样,根据您的上一次编辑,如果您打算False在循环之后立即返回任何内容,则可以用以下方法替换整个例程:

return any(calcSth(a,b)>60 for a,b in myList)
Run Code Online (Sandbox Code Playgroud)

编辑:关于性能,我进行了一次快速测试,并且如预期的那样,any使用我提供的输入数据(最后35个项目和匹配条件,这是“最坏的情况”),该构造大约快了20%。如果匹配条件在列表的开头,则两种构造之间的差异非常小。