[英]Creating an empty list in Python
在 Python 中創建新的空列表的最佳方法是什么?
l = []
或者
l = list()
我問這個是因為兩個原因:
以下是測試哪一段代碼更快的方法:
% python -mtimeit "l=[]"
10000000 loops, best of 3: 0.0711 usec per loop
% python -mtimeit "l=list()"
1000000 loops, best of 3: 0.297 usec per loop
然而,在實踐中,這個初始化很可能只是你程序的一小部分,所以擔心這一點可能是錯誤的。
可讀性是非常主觀的。 我更喜歡[]
,但一些知識淵博的人,比如 Alex Martelli,更喜歡list()
因為它是可發音的。
list()
本質上比[]
慢,因為
有符號查找(如果您不只是將列表重新定義為其他東西,python 無法提前知道!),
有函數調用,
然后它必須檢查是否傳遞了可迭代參數(因此它可以創建包含元素的列表)ps。 在我們的情況下沒有,但有“如果”檢查
在大多數情況下,速度差異不會產生任何實際差異。
我使用[]
。
我真的不知道它,但在我看來,根據經驗, jpcgt 實際上是正確的。 以下示例:如果我使用以下代碼
t = [] # implicit instantiation
t = t.append(1)
在解釋器中,然后調用 t 會給我沒有任何列表的“t”,如果我附加其他內容,例如
t = t.append(2)
我收到錯誤“'NoneType' 對象沒有屬性 'append'”。 但是,如果我通過以下方式創建列表
t = list() # explicit instantiation
然后它工作正常。
只是為了突出@Darkonaut 的答案,因為我認為它應該更明顯。
new_list = []
或new_list = list()
都很好(忽略性能),但append()
返回None
,因此您不能執行new_list = new_list.append(something)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.