The*_*kal 1 python performance list-comprehension any
我正在使用any列表理解。我想在any返回时打破列表理解True。例如,
import time
def f(x):
time.sleep(2)
return x
beginTime = time.time()
result = any([f(x) == 0 for x in [0,1,3,5,7]])
endTime = time.time()
print(endTime - beginTime)
Run Code Online (Sandbox Code Playgroud)
上面的代码打印了10 秒,尽管它可能会在 first 之后中断迭代True。
Mus*_*dın 11
使用generator expression代替list comprehension来避免首先形成列表:
result = any(f(x) == 0 for x in [0,1,3,5,7])
Run Code Online (Sandbox Code Playgroud)
(列表理解的方括号不见了)
请注意,any在任何一种情况下都有短路行为,但不同的是缺乏形成整个列表。