image-20210103165044286

Python中的b=a

本题目中我进行了一个列表赋值的操作,当时没有注意

1
2
3
4
5
a = [1,2,3,4,5]
b = a
for i in b:
a.remove(i)
print(a)

我原本以为这串代码结束之后,输出的结果应该是空列表[],没想到却是[2,4]

经过一番调试之后,我发现a和b居然是一个对象,这时候我恍然大悟,原来b=a这个操作竟然是将b和a指向同一个对象。

要想实现我之前的想法,只需要将我的代码修改一处即可实现。

1
2
3
4
5
a = [1,2,3,4,5]
b = a[:]
for i in b:
a.remove(i)
print(a)

这其中不同之处就在于,我将b=a改成了b=a[:],会创建一个新的与a完全相同的对象,但是与a并不指向同一对象。

想要判断两个对象是否是一致的,我们可以用Python的id()方法来进行判断

1
2
print(id(a))
print(id(b))