Python 的 append() 與清單的 = 運算子:為什麼結果不一樣?
append() 方法之間的明顯差異當與列表一起使用時 = 運算符可能會令人困惑。為了闡明這種差異,讓我們深入研究這些操作的底層機制。
= 運算子
當 = 運算子應用於清單時,它會有效地附加清單位於原始清單的右側。但是,此操作不會建立新的清單物件;而是建立新的清單物件。相反,它會就地修改現有清單。
append() 方法
相反,append() 方法明確地將作為參數提供的物件插入到原始清單的末尾。此插入導致對儲存在原始清單的最後一個元素中的相同清單實例的參考。因此,在列表上遞歸呼叫append()會導致無限迴圈。
清晰的說明
考慮以下程式碼片段:
<code class="python">c = [1, 2, 3] c += c print(c) # Output: [1, 2, 3, 1, 2, 3]</code>
在此範例中,= 運算子將c 的元素(即[ 1, 2, 3])附加到c,有效地將其長度加倍。
現在,讓我們稍微修改一下程式碼:
<code class="python">c = [1, 2, 3] c.append(c) print(c) # Output: [1, 2, 3, [...]]</code>
這裡,append() 方法插入整個清單 c 作為最後一個元素。此遞歸會導致無限循環,因為 c[-1] 變得與 c 本身相同。
另一種方法
如果您的目的是連接列表,您可以使用extend()方法而不是=運算符。與 一樣,extend() 方法將另一個列表(或可迭代)的元素追加到原始列表,從而就地修改它。
結論
The append() 和 = 運算子之間的主要區別在於它們各自的行為。 = 運算子將右側列表的元素連接到原始列表,而append() 將列表本身作為最後一個元素插入,從而導致遞歸循環。
以上是為什麼 Python 的 `=` 運算子和 `append()` 方法在處理清單時會產生不同的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!