簡體   English   中英

使用結果值或函數在Python中添加列表

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

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