[英]Is it good to store as a variable for “if condition” in iteration
我對此有點困惑。不要打擾輸出。
L = [9, 2, 8, 2, 3, 4, 2]
>>>[i for i, x in enumerate(L) if x == min(L)]
在這里, min(L)
是否在每次迭代中調用?或者它是否像這樣好
L = [9, 2, 8, 2, 3, 4, 2]
m = min(L)
>>>[i for i, x in enumerate(L) if x == m]
希望我的問題很明確。
很容易檢查(IPython控制台):
In [9]: def foo(x):
print "Called."
return True
In [10]: [1 for x in xrange(10) if foo(x)]
Called.
Called.
Called.
Called.
Called.
Called.
Called.
Called.
Called.
Called.
Out[10]: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
至於優化的函數調用,通常是Just In Time編譯器的草皮。 因此,在PyPy的情況下,經過一定數量的迭代后,編譯器可能會認為這是一個熱點並且可能會嘗試優化函數的內部,但我認為這樣的優化不足以降低復雜性。 O(n)
至O(1)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.