【Python】[List][append][insert]神奇的聯動機制

從菜鳥教程上看來的,本地實驗了一把:

>>> a=[[0,1],[1,2],[2,3]]
>>> a.insert(2,a[1])
>>> a.append(a[3])
>>> print (a)
[[0, 1], [1, 2], [1, 2], [2, 3], [2, 3]]

增_元素:list.insert(INDEX, "{ELEMENT_NAME}")

在列表指定位置添加新的對象

增_元素:list.append(“{ELEMENT_NAME}”)

在列表末尾添加新的對象

然後進行打印:

可以看到,最後的輸出,符合預期;

 

用 id() 函數查看內存地址:

id(a[1])==id(a[2])      #True
id(a[3])==id(a[4])       #True

 

所謂的聯動:

>>> a[1][1]=0
>>> a[4][1]=4
>>> print(a)
[[0, 1], [1, 0], [1, 0], [2, 4], [2, 4]]
>>>

可以看到:

a[1][1]和a[2][1]都發生了改變;

a[3][1]和a[4][1]都發生了改變;

其中:

a[2]是從a[1]來的;

a[4]是從a[3]來的;

如果想只修改其中一個元素(子列表),必須把該子列表完整定義一遍,如在上述代碼後增加:

a[1]=[1,1]
print(a)

則輸出爲:

[[0,1],[1,1],[1,0],[2,4],[2,4]]

此後再修改子元素,不會發生聯動:

a[1][1]=5
print(a)

輸出爲:

[[0,1],[1,5],[1,0],[2,4],[2,4]]

用 id() 函數再次查看內存地址

id(a[1])==id(a[2])     #False
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章