python - 为什么修改函数内另一个列表的副本的列表会影响原始列表?
问题描述
我想要:
- 创建一个已经存在的全局列表的副本,
- 修改这个新列表的内容而不影响原来的,
- 打印两个列表
都在一个函数内。
我的代码:
original_list = ['tom', 'adam', 'john']
def a():
new_list = original_list
new_list[1] = 'simon'
print(original_list, new_list)
a()
预期结果:
['tom', 'adam', 'john'] ['tom', 'simon', 'john']
实际结果:
['汤姆','西蒙','约翰'] ['汤姆','西蒙','约翰']
请解释为什么我的代码的行为方式与我期望的不同。
提前致谢!
解决方案
这是因为您没有复制列表,而是指向具有不同变量的同一个列表。
如果您正在使用,则可以在将原始数组分配给新变量时Python3.3+
使用该方法。copy
如果没有,你可以尝试切片list[:]
。
推荐阅读
- excel - Excel使用VBS和批处理下载文件,无法从VBS下载文件
- reactjs - 如何在 ReactJs 中将 http 重定向到 https
- ios - SwiftUI - 不显示的列表
- python - 将列表值添加到列表字典
- arrays - 如何将 ArrayAdapter 与 MutableList 或对象 arrayList 一起用于 Kotlin 中的 Spinner?
- javascript - 根据 JavaScript 中的条件修改数组
- python - Selenium 不使用 .clear() 清除网站搜索栏
- hypervisor - 管理程序,它有什么作用?
- python - 使用 GEKKO IPOPT 对氨反应器进行动态建模
- java - 导入 java bcrypt 库时遇到问题