当我们使用如下方式创建一个二维列表时:
l = [[0]*3]*3

如果尝试给其中一个元素赋值
l[0][1] = 1
会发现整个列表的第二列都被赋值了

这种情况的原因是创建列表时第2,3行其实是第一行的一个浅拷贝,它们的地址是一样的,给任意一个赋值其余的也会被赋值,解决方法是使用如下方法建立二维列表
l = [[0]*3 for i in range(3)]
赋值结果:
l[0][1] = 1

本文揭示了在Python中创建二维列表时使用浅拷贝可能导致的问题,即修改列表中的一个元素会影响所有其他元素,这是因为这些元素指向同一内存地址。文章提供了一个避免此问题的方法,通过使用列表推导式来创建独立的子列表。
当我们使用如下方式创建一个二维列表时:
l = [[0]*3]*3

如果尝试给其中一个元素赋值
l[0][1] = 1
会发现整个列表的第二列都被赋值了

这种情况的原因是创建列表时第2,3行其实是第一行的一个浅拷贝,它们的地址是一样的,给任意一个赋值其余的也会被赋值,解决方法是使用如下方法建立二维列表
l = [[0]*3 for i in range(3)]
赋值结果:
l[0][1] = 1

您可能感兴趣的与本文相关的镜像
Dify
Dify 是一款开源的大语言模型(LLM)应用开发平台,它结合了 后端即服务(Backend as a Service) 和LLMOps 的理念,让开发者能快速、高效地构建和部署生产级的生成式AI应用。 它提供了包含模型兼容支持、Prompt 编排界面、RAG 引擎、Agent 框架、工作流编排等核心技术栈,并且提供了易用的界面和API,让技术和非技术人员都能参与到AI应用的开发过程中
859
2181

被折叠的 条评论
为什么被折叠?