从菜鸟教程上看来的,本地实验了一把:
>>> 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