[英]append in a list in Python using result value or a function
從性能和編碼風格的角度來看,這兩種方法是否等效?
def foo(n):
return n*2
# case 1 with ".append(function())"
mylist = [1,2,3,4,5,6,7,8,9,10]
result = list()
for l in mylist:
result.append(foo(l))
# case 2 ".append(result)"
mylist = [1,2,3,4,5,6,7,8,9,10]
result = list()
for l in mylist:
r = foo(l)
result.append(r)
您的方法或多或少是等效的; 選項2 要做更多的工作; 它必須對臨時變量進行額外的存儲和名稱查找。 實際上,兩者之間的差異很小,您應該將重點放在代碼的可讀性上,而不是過早的優化。
對於您的特定示例,使用列表理解會更好:
result = [foo(l) for l in mylist]
列表理解使用C代碼構造列表,而不必在每次循環迭代時都查找.append()
方法。
我認為它們是相同的,但是最好的選擇是map(foo, mylist)
-即使從性能的角度來看,因為append
可能會導致列表大小調整,這需要花費額外的時間
僅刪除臨時任務可能會獲得一些性能提升,但是請記住,過早的優化是有害的,而微優化是不值得的
當然,有更好的方法可以做,例如
清單理解
mylist = [1,2,3,4,5,6,7,8,9,10]
result = [n*2 for n in mylist]
result = [foo(i) for i in mylist]
是你想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.