0
如果多次使用python列表中的值,將其存儲爲變量而不是訪問數組效率更高?Python:多次存儲列表值或訪問列表
例如,如果有大量的任意功能列表的同一索引處上的值的所有執行,象下面這樣:
for i in range(len(aList)):
funcA(aList[i])
funcB(aList[i])
# etc...
funcN(aList[i])
VS
for i in range(len(aList)):
val = aList[i]
funcA(val)
funcB(val)
# etc...
funcN(val)
每次獲得列表中的值是否與開銷相關? documentation表明從列表中獲取項目的時間複雜度是O(1),但它沒有說明常數是多少。如果大量函數使用這個值,會不會引人注目?
編譯器能夠優化這個嗎?我在想它可能,因爲它可以判斷被調用的任何函數是否會修改該索引處的值,並根據該值是否可能更改而將值或引用保存到索引處。
如果每次查找值都沒有顯着的時間損失,爲了便於閱讀,我會傾向於將值保存到局部變量中。對此有沒有「pythonic」建議?
我很小的開銷。編譯器和解釋器都不能優化它 - 它如何知道你調用的任何函數是否會修改該值?不幸的是,Python對於一種語言來說太過於動態。 –