簡體   English   中英

在迭代中將“if condition”存儲為變量是否合適?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM