首頁 > 後端開發 > Python教學 > 為什麼在Python中更改列表'y'也會更改列表'x'?

為什麼在Python中更改列表'y'也會更改列表'x'?

WBOY
發布: 2023-08-20 11:25:14
轉載
1534 人瀏覽過

為什麼在Python中更改列表y也會更改列表x?

範例

在這篇文章中,我們將看到如果你改變一個列表,比如說列表y,是否也會改變列表x。為此,讓我們先看一個有兩個列表的例子,並嘗試使用append()和print進行輸出 -

x = []
y = x
print("Value of y = ",y)
print("Value of x = ",x)
y.append(25)

print("\nAfter changing...")
print("Value of y = ",y)
print("Value of x = ",x)
登入後複製

輸出

('Value of y = ', [])
('Value of x = ', [])

After changing...
('Value of y = ', [25])
('Value of x = ', [25])
登入後複製

上面,我們看到更新列表y也會改變列表x。

我們看到了上面的結果,因為−

  • 清單是可變的,即您可以更改它們的內容。
  • 變數是指向物件的名稱。

上面,寫 y = x 並不會建立清單的副本。它建立一個新變數 y,該變數引用與 x 引用相同的物件。這意味著只有一個對象,即列表,x 和 y 都引用它。

當呼叫append()時,可變物件的內容從[]變成[25]。由於兩個變數都指向同一個對象,使用任何一個變數都可以存取修改後的值[25]。

假設我們將一個不可變物件賦值給x,那麼x和y將不再相等。這是因為整數是不可變的 -

Example

的中文翻譯為:

範例

# ints are immutable
x = 5
y = x
print("Value of y = ",y)
print("Value of x = ",x)

# We are creating a new object
x = x + 1
print("\nAfter changing...")
print("Value of y = ",y)
print("Value of x = ",x)
登入後複製

輸出

('Value of y = ', 5)
('Value of x = ', 5)

After changing...
('Value of y = ', 5)
('Value of x = ', 6)
登入後複製

當我們寫x = x 1時,我們並不是透過增加它的值來改變int 5。相反,我們正在創建一個新物件(int 6)並將其分配給x。在此賦值之後,我們有兩個物件(int 6和5)和兩個引用它們的變數。

因此,

  • 可變對象 − 如果我們有一個可變對象,例如列表、字典、集合等,我們可以使用一些特定的操作來改變它,所有引用它的變數都會看到這個改變。

  • 不可變物件 − 如果我們有一個不可變對象,例如str,int,tuple等,所有引用它的變數將始終看到相同的值,但將該值轉換為新值的操作總是傳回一個新物件。

以上是為什麼在Python中更改列表'y'也會更改列表'x'?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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