列表上的 Python Append() 與 =:為什麼它們會給出不同的結果?

DDD
發布: 2024-10-27 20:55:30
原創
931 人瀏覽過

 Python Append() vs.  = on Lists: Why Do They Give Different Results?

清單上的Python Append() 與= 運算子:了解結果差異

在Python 中,append() 方法和運算=符可用於修改清單。然而,這些操作有時會產生意想不到的結果,特別是在處理巢狀清單時。本文旨在解釋為什麼這兩種方法的行為不同。

= 運算子

= 運算子將右側清單的元素加入清單在左側。修改原始列表,並傳回更新後的列表。例如:

<code class="python">c = [1, 2, 3]
c += c  # This is equivalent to c.extend(c)
print(c)  # Output: [1, 2, 3, 1, 2, 3]</code>
登入後複製

在這種情況下, = 運算子將 c 與 c 的元素連接起來,得到一個原始大小兩倍的列表。

append()方法

append() 方法將指定的物件插入到清單末端。與 = 運算子不同,append() 方法不會連接物件的元素,而是將其新增為對原始清單的參考。例如:

<code class="python">c = [1, 2, 3]
c.append(c)  # This is equivalent to c.insert(len(c), c)
print(c)  # Output: [1, 2, 3, [...]]</code>
登入後複製

在這種情況下,append() 方法在 c 的末尾添加對列表 c 的引用。這會導致循環引用,其中 c[-1] 和 c 引用同一個物件。列印 c 時,您將得到輸出 [1, 2, 3, [...]],其中 [...] 表示無限遞歸。

為什麼會有差異?

= 運算子和append() 方法之間的主要區別在於,前者作用於指定物件的元素,而後者則將物件視為一個整體。使用 = 新增清單時,Python 會連接元素,從而有效地將每個元素複製到新清單中。相反,當使用append()添加列表時,Python只是添加對原始列表的引用,如果列表包含對其自身的引用,這可能會導致無限遞歸。

替代方案

如果您的目的是連接兩個列表,您可以使用extend()方法而不是=運算符。 extend() 方法的工作方式與 = 類似,但不會修改原始清單。例如:

<code class="python">c = [1, 2, 3]
c.extend(c)
print(c)  # Output: [1, 2, 3, 1, 2, 3]</code>
登入後複製

以上是列表上的 Python Append() 與 =:為什麼它們會給出不同的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板