浅复制会创建新的对象,其内容是原对象的引用,之所以称为浅复制,是它仅仅只复制了一层。
切片操作返回的是列表元素的浅复制:生成一个新的列表,并且把原列表中所有元素的引用否复制到新列表中。
如果原列表中只包含整数、实数、复数等基本类型或元组、字符串这样的不可变类型的数据,一般是没有问题的。
如果原列表中包含列表之类的可变数据类型,由于浅复制时只把子列表的引用复制到新列表中,这样的话修改任何一个都会影响另外一个。
如果对赋值操作右侧的列表使用切片,而把切片的起止索引都留空,那就会产生一份原列表的拷贝。
如果对赋值操作左侧的列表使用切片,而又没有指定起止索引,那么系统会把右侧的新值复制一份,并用这份拷贝来替换左侧列表的全部内容,而不会重新分配新的列表。
列表的排序与逆序
使用列表对象自身提供的sort() 方法可以原地排序,没有返回值,或者说返回空值None。
也可以使用内置函数sorted() 对列表进行排序,与列表对象的sort() 方法不同,内置函数sorted() 返回新列表,并不对原列表进行任何修改。
可以使用列表对象的reverse() 方法将所有元素原地逆序。
Python 提供了内置函数reversed() 支持对列表元素进行逆序(注意,不是降序) 排列,与列表对象的reverse() 方法不同,内置函数reversed() 不对原列表做任何修改,而是返回一个逆序排列后的迭代对象。
2021-03-24
最新推荐文章于 2022-01-26 22:26:06 发布