Python - 列表补充(三)

141 阅读2分钟

这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战

🐍列表复制

数据是在编程逻辑中经常遇到的,复制意味着产生了数据的副本。大量数据在工作中其实也需要备份。列表的功能就是能够把大量的数据放在一起,但列表里的数据是可以进行增删改查的,数据一旦发生了变化,就不能回复到原来的样子了。如果还需要对原来的数据进行查验,没有备份就很难做到了。

列表复制的代码如下:

lists1 = [1,2,3,4]
lists2 = lists1
print("列表1:"+str(lists1))
print("列表2:"+str(lists2))

请添加图片描述

实际上就是将lists1的内存地址赋值给了lists2的内存地址,这与变量的引用还是有差别的。列表指向的是一个地址,当改变了地址指向的值时,两个列表的值就发生了改变。

  • 直接赋值操作

现在用直接赋值操作将lists2 = lists1这种复制做一下改变,即改变lists1中的数值。代码如下:

lists1 = [1,2,3,4]
lists2 = lists1
print("列表1:"+str(lists1))
print("列表2:"+str(lists2))
lists1[1] = 5
print("发生赋值变化后")
print("列表1:"+str(lists1))
print("列表2:"+str(lists2))

运行结果如下:

在这里插入图片描述

从运行结果上可以发现,两个列表的值都发生了改变。原因是列表指向的是列表中元素的内存地址。列表和列表发生赋值变化,实际上地址指向相同,不是又发生了一个内存空间。当改变其中一个元素内存地址中的值时,同个列表就都发生了变化,这是由内存地址中的指向没有发生改变引起的。