簡體   English   中英

在 Python 中創建一個空列表

[英]Creating an empty list in Python

在 Python 中創建新的空列表的最佳方法是什么?

l = [] 

或者

l = list()

我問這個是因為兩個原因:

  1. 技術原因,至於哪個更快。 (創建一個類會導致開銷?)
  2. 代碼可讀性——哪一個是標准約定。

以下是測試哪一段代碼更快的方法:

% 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()本質上比[]慢,因為

  1. 有符號查找(如果您不只是將列表重新定義為其他東西,python 無法提前知道!),

  2. 有函數調用,

  3. 然后它必須檢查是否傳遞了可迭代參數(因此它可以創建包含元素的列表)ps。 在我們的情況下沒有,但有“如果”檢查

在大多數情況下,速度差異不會產生任何實際差異。

我使用[]

  1. 它更快,因為列表符號是一個短路。
  2. 創建一個包含項目的列表應該與創建一個沒有項目的列表大致相同,為什么會有區別?

我真的不知道它,但在我看來,根據經驗, 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.

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