Python学习之路:关于列表(List)复制的那点事
导读: 要谈列表的复制,我们就要谈到Python的赋值规则首先我们创建列表a:a = [1,2,3]通常我们复制一个元素的方法是这样的:b = a #复制元素的一般方法print(a)p
丝瓜网小编提示,记得把"Python学习之路:关于列表(List)复制的那点事"分享给大家!
要谈列表的复制,我们就要谈到Python的赋值规则
首先我们创建列表a:a = [1"2"3]
通常我们复制一个元素的方法是这样的:b = a #复制元素的一般方法
print(a)
print(b)
结果为:
[1"2"3]
[1"2"3]
通过这行代码,我们固然是创建了一个与列表a相等的列表b,但此时却会出现一个问题:
当我们尝试对新创建的列表b进行排序操作(如倒序操作)时:b.reverse()
print(b)
结果为:
[3"2"1]
到这里一切看似没啥毛病,实则坑爹的事情已经悄然发生~
让我们尝试打印一下列表a的值:print(a)
结果为:
[3"2"1]
可以看到,列表a的排序也改变了
这未必是我们希望看到的结果
出现这种情况的原因是:
当我们使用“b=a”这条代码来赋值列表b时,列表b与列表a是指向同一个地址的,而对列表进行排序操作并不会赋给列表一个新的地址,也就是说此时无论我们是对列表a或是对列表b进行排序操作,另一个列表的排序也会随之改变
而如果我们对列表a或是对列表b进行赋值操作的话,则没有这种顾虑,因为在赋值的时候列表会分配到一个新的地址
那么我们要如何解决这一问题呢?
很简单,只需利用列表的分片,使用如下代码对列表进行复制操作: