在這篇文章中,我們將看到如果你改變一個列表,比如說列表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將不再相等。這是因為整數是不可變的 -
# 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中文網其他相關文章!