我有以下代码,我想知道是否可以将其转换为单行循环?
for a,b in myList :
sth = calcSth(a, b)
if sth > 60 :
return True
return False
Run Code Online (Sandbox Code Playgroud)
另一个问题是:单行循环和块编码循环的性能是否有所不同?
您可以用此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%。如果匹配条件在列表的开头,则两种构造之间的差异非常小。
| 归档时间: |
|
| 查看次数: |
1002 次 |
| 最近记录: |