首页 > 解决方案 > Python 3 比较列表变量

问题描述

我想让 listb等于 list a,然后b在不影响 a 的情况下进行更改。

a = "1234"
b = ""
a = list(a)
b = a

当我print(a)改变之后ba也会改变。虽然在下面的代码中,我没有遇到这个问题,这意味着我对 variable 所做的任何更改都ba保持独立。

a = "1234"
b = ""
a = list(a)
b = list(a)

我正在寻找关于幕后发生的事情以及第二个代码示例为何起作用的解释。

标签: pythonpointers

解决方案


当您分配时b=a,Python 通过引用分配,因此该变量b只是指向与 . 相同的对象aid()您可以使用打印出对象 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)。


推荐阅读