Python中列表的append方法和+運算子有什麼區別?


在這篇文章中,我們將探討append方法和列表中的加號運算子之間的區別。

+運算子在處理列表時的行為

Python使用'+'運算子訪問第一個列表的每個元素。當使用'+'符號時,會生成一個容量多一個元素的新列表。然後必須將舊列表的元素複製到新列表中,並將新元素插入到末尾。

示例

在這個示例中,我們將看到在Python中使用+運算子向列表新增元素。

list =[] n = 10 for i in range(n): list = list+[i] print(list)

輸出

以上程式碼的輸出如下。

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

使用+運算子向列表新增元素的複雜度

對於每次迭代,都必須從原始列表複製“i”個元素來構建新的列表。假設訪問列表中元素所需的時間是恆定的。因此,為了計算將n個條目追加到Python列表(即示例列表)所需的複雜度或時間,我們將對所有列表訪問進行加和,並乘以訪問和儲存列表元素所需的時間。

為了計算總的訪問和儲存操作次數,首先計算第一次追加元素時複製列表的訪問和儲存操作次數。這是一個已克隆的部分。第二次追加需要兩次複製操作。第三次追加需要三次複製操作。到目前為止,我們已經複製了以下數量的列表元素。因此,時間複雜度為= O(n^2)。

使用append()方法處理列表時的行為

使用.append()方法,這是一種節省時間的方法:列表上的.append()方法告訴程式碼使用mutator方法向列表新增另一個成員。

示例

此示例說明如何使用append()方法。

list =[] n = 10 for i in range(n): list.append(i) print(list)

輸出

以上程式碼的輸出如下。

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

事實證明,使用.append()方法在Python中向現有列表新增一個額外條目非常高效。向列表新增新項是一個O(1)操作。因此,追加n個元素的總複雜度為O(1)。

append方法和+運算子的區別

當使用'+'運算子組合兩個列表時,它會在Python中建立一個新的列表,原始物件不會被修改。另一方面,使用extend和append等方法,我們可以在適當位置新增列表,即原始物件會被修改。此外,使用append會將列表作為物件插入,而'+'只是連線兩個列表。

示例

以下示例演示了列表中+運算子和append方法的區別。

list1 = [1, 2, 3] list2 = ['a', 'b'] list3 = list1 + list2 print("Using + operator: ") print(list3) list1.append(list2) print("Using append method: ") print(list1)

輸出

以上程式碼的輸出如下。

Using + operator:
[1, 2, 3, 'a', 'b']
Using append method:
[1, 2, 3, ['a', 'b']]

更新於:2023年11月3日

3K+瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.