最近在用Python写代码的时候,无意将生成两个空列表的语句改成了:
a = b = []
这样乍一看没什么问题,都是生成空列表嘛,但是这样做得到的是浅拷贝,就是说a和b的值会随着一个的改变而改变,导致两个列表不管进行什么操作得到的都是同一个列表:
In [5]: a = b = []
In [6]: a.append(20)
In [7]: b
Out[7]: [20]
In [8]: b.append(299)
In [9]: a
Out[9]: [20, 299]
In [10]: b
Out[10]: [20, 299]
所以在实际应用中最好还是别偷懒,使用:
a = []
b = []
比较好.
本文揭示了Python中创建空列表时使用a=b=[]这一语句存在的问题。该做法会导致a和b引用同一内存地址,使得对其中一个列表的修改会影响到另一个。文章建议采用独立赋值避免这一陷阱。
337

被折叠的 条评论
为什么被折叠?



