【Python基础】为什么更改列表'y'也会更改列表'x'?
先看一段代碼:
x?=?[] y?=?x y.append(10) print(y) print(x)上面這段代碼的輸出結果如下:
為什么我只是給列表y追加了一個元素,而列表x也改變了???
產生這樣的結果有兩個原因:
(1)變量只是指向具體對象的名稱,當在執行y=x語句時,并不會為列表創建一個副本,而只是創建了一個新變量y指向x所指向的同一個對象。這也就是說只存在一個對象(列表),x和y都只是對它的引用。
(2)列表屬于mutable(可變)對象,這意味著可以改變它的內容。
在調用append()之后,這個可變對象的內容由[]變為[10]。由于兩個變量都指向同一對象,因此使用任何一個名稱所訪問到的都是修改后的值[10]。
我們再來看一段代碼:
上面這段代碼的輸出結果為:
通過前面的學習,輸出結果好像不應該是一樣的嗎???
當然不!因為整數是immutable(不可變)對象,當我們執行x=x+1語句時,我們并不是改變5這個對象的值,而是創建一個新的對象(整數6)并將其賦值給x(也就是改變了x所指向的對象)。在賦值之后我們就有了兩個對象(整數6和5)以及分別指向它們的兩個變量(x指向6而y指向5)。
總結
1.如果我們有一個可變對象(list等),我們可以使用某些特定的操作來改變它,所有指向它的變量都會顯示它的改變
2.如果我們有一個不可變對象(int等),所有指向它的變量都將顯示相同樣的值,只要是會改變這個值的操作都將總是返回一個新的對象
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:
https://t.zsxq.com/y7uvZF6
本站qq群704220115。
加入微信群請掃碼:
總結
以上是生活随笔為你收集整理的【Python基础】为什么更改列表'y'也会更改列表'x'?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于Python的特征自动化选择:两行代
- 下一篇: 预备AI工程师升级必备:大厂常见图像分类