我有下面的代码,我想知道我是否可以把它转换成单行循环?
for a,b in myList :
sth = calcSth(a, b)
if sth > 60 :
return True
return False
另一个问题是:单行循环和分组码循环的性能有什么不同吗?
最佳答案
您可以用这条单行线替换整个循环(在单行上使用if
时,这真的是单行线吗?):
if any(calcSth(a,b)>60 for a,b in myList): return True
any
将在aa,b
符合条件时立即停止测试。另外,根据您上次的编辑,如果您计划在循环之后立即返回
False
,如果没有匹配的内容,您可以通过以下方式替换整个例程:return any(calcSth(a,b)>60 for a,b in myList)
编辑:关于性能,我做了一个快速测试,正如所预测的,
any
构造与我提供的输入数据相比大约快了20%(最后是35项和匹配条件,有点“最坏情况”)。如果匹配条件在列表的开头,则两个结构之间的差异非常小。关于python - Python:在单行中中断for循环以实现单行与块代码的循环和性能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40183320/