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进行赋值操作的话,则没有这种顾虑,因为在赋值的时候列表会分配到一个新的地址

那么我们要如何解决这一问题呢?

很简单,只需利用列表的分片,使用如下代码对列表进行复制操作:

丝瓜网 crfgs.com