
列表修改与源值关联
在 python 中,列表是可变数据结构,这意味着对列表的修改会直接反映在原始列表中,而不会创建新的副本。这让人感到困惑,尤其是当列表包含字典等可变对象时。
考虑以下代码段:
shadow = [{
"name": "admin",
"password": "admin",
"age": "18",
},
{
"name": "xys",
"password": "123132",
"age": "18",
}]
arr1 = list(filter(lambda x: x["name"] == "xys", shadow))
arr1[0].update({"name": "yourself"})
print(arr1) # 输出 [{'name': 'yourself', 'password': '123132', 'age': '18'}]
print(shadow[1]) # 输出 {'name': 'yourself', 'password': '123132', 'age': '18'}为什么在 arr1 上修改值会影响 shadow 中的源值?
立即学习“Python免费学习笔记(深入)”;
功能列表:底层程序与前台页面分离的效果,对页面的修改无需改动任何程序代码。完善的标签系统,支持自定义标签,公用标签,快捷标签,动态标签,静态标签等等,支持标签内的vbs语法,原则上运用这些标签可以制作出任何想要的页面效果。兼容原来的栏目系统,可以很方便的插入一个栏目或者一个栏目组到页面的任何位置。底层模版解析程序具有非常高的效率,稳定性和容错性,即使模版中有错误的标签也不会影响页面的显示。所有的标
0
引用赋值
当将 shadow 中符合条件的字典引用赋值给 arr1 时,arr1 不仅储存了字典的内容,还储存了指向原始列表中字典的引用。因此,当通过 arr1 访问字典时,实际上是在修改原始列表中的字典。
避免意外修改
如果你希望对列表中的值进行修改而不影响原始列表,有几种方法可以考虑:
arr1 = shadow[1:] # 创建新列表
arr1[0].update({"name": "yourself"})
print(arr1) # 输出 [{'name': 'yourself', 'password': '123132', 'age': '18'}]
print(shadow[1]) # 输出 {'name': 'xys', 'password': '123132', 'age': '18'}以上就是Python 中,列表修改为何会影响源值?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号