这是我参与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))
运行结果如下:
从运行结果上可以发现,两个列表的值都发生了改变。原因是列表指向的是列表中元素的内存地址。列表和列表发生赋值变化,实际上地址指向相同,不是又发生了一个内存空间。当改变其中一个元素内存地址中的值时,同个列表就都发生了变化,这是由内存地址中的指向没有发生改变引起的。