python - Python 3 比较列表变量
问题描述
我想让 listb
等于 list a
,然后b
在不影响 a 的情况下进行更改。
a = "1234"
b = ""
a = list(a)
b = a
当我print(a)
改变之后b
,a
也会改变。虽然在下面的代码中,我没有遇到这个问题,这意味着我对 variable 所做的任何更改都b
将a
保持独立。
a = "1234"
b = ""
a = list(a)
b = list(a)
我正在寻找关于幕后发生的事情以及第二个代码示例为何起作用的解释。
解决方案
当您分配时b=a
,Python 通过引用分配,因此该变量b
只是指向与 . 相同的对象a
。id()
您可以使用打印出对象 ID 的方法来确认这一点:
>>> a="1234"
>>> id(a)
2858676454064
>>> b=a
>>> id(b)
2858676454064
当您这样做时b = list(a)
,该list()
方法会返回一个新列表。
>>> a = list(a)
>>> id(a)
2858676458880
>>> b = list(a)
>>> id(b)
2858676458944
之后a = list(a)
,a
对象不再与a
之前相同(2858676454064)。
推荐阅读
- c# - 选择表的第二个 50%
- hadoop - HDFS未检测到数据节点容量增加
- sql-server - 拉伸数据库仅拉伸 9999 行
- android - Android tabview标题添加3个textview?
- javascript - Regex101.com 和 Chrome 输出不同
- python - Python文件描述符开闭操作,分块上传文件
- angular - 使用自动完成和“updateOn:'blur'”时防止早期验证
- javascript - 在函数内发生更改后无法访问更改的变量值
- javascript - 设置属性时设置所有同名属性的Javascript对象
- python - 如何通过按 Tkinter 中的按钮将 Var 显示到标签中