【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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)