首页 > 编程知识 正文

python定义一个数组,list底层数据结构

时间:2023-05-06 14:45:50 阅读:26428 作者:1352

1 .清单浅副本

list_1=[1,[ 22,33,44 ],[ 5,6,7 ],{'name': 'Sarah'}]

第一种复制方法: list_2=list_1.copy (

第二种复制方式: list_2=list_1[:]

请注意,直接list_2=list_1错误!

这样,只要给list_1加上别名,对list_2进行添加、删除和更改操作,list_1也会发生更改,如下图所示

浅拷贝也有一些问题。 如果list_1包含可变对象(如列表、词典等),则修改list_2中的可变对象时,list_1也会发生以下变化:

这些问题是由列表中较低级别的实现引起的。

2实现列表中的较低级别

列表中元素的地址是连续的

列表中存储的实际上是这些元素的地址! ——列表中的元素可以分散存储在内存中

list_1和list_2的基本实现如下: 因此,对于列表元素的基本数据类型,请指向值。 名单,鼻祖的,指其地址; 词典时为词典散列表值

由于基本数据类型和元素是不变的,因此更改list_2将指向新的数字或元组地址

清单和词典指向同一个地址

3清单的深层副本

深度复制可以复制、完全隔离、清晰所有级别的相关元素,从而避免上述问题

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。