列表_元素的5种添加方式_效率问题

当列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担。但这
个特点涉及列表元素的大量移动,效率较低。除非必要,我们一般只在列表的尾部添加元素
或删除元素,这会大大提高列表的操作效率。

一、append()方法
原地修改列表对象{不会创建新的对象},在列表尾部追加新的元素,速度最快,推荐使用
a = [10,20]
a.append(30)
print(a)   #结果:[10,20,30]

二、+运算符操作
并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次
复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用
a = [10,20]
print(id(a))  #结果:1873487337992
a=a + [30]
print(id(a))  #结果:1873487338888
print(a)      #结果:[10, 20, 30]

三、extend()方法
将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象
a = [10,20]
print(id(a))   #结果:2255790873096
a.extend([30,40])
print(id(a))   #结果:2255790873096
print(a)       #结果:[10, 20, 30,40]

四、insert()方法
使用 insert()方法可以将指定的元素插入到列表对象的任意指定位置。这样会让插入位置后
面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。类似发生这种
移动的函数还有:remove()、pop()、del(),它们在删除非尾部元素时也会发生操作位置后
面元素的移动。
a = [1,2,3,4,5,6]
a.insert(2,10)
print(a)   #结果:[1, 2, 10, 3, 4, 5, 6];在索引2的位置上插入新的元素10

五、乘法扩展
使用乘法扩展列表,生成一个新列表,新列表元素时原列表元素的多次重复
b = [10,20]
c = b*3
print(c)  #结果:[10, 20, 10, 20, 10, 20]


六、删除列表元素
alist=[1,2,3,2,4,5,9,6,7,8,9]

alist.remove(9)  #指定元素删除,从索引0开始第一个匹配上的删除
结果:[1,2,3,2,4,5,6,7,8,9]

alist.pop(3)     #指定索引位置删除,且返回要删除的元素
结果:[1,2,3,4,5,9,6,7,8,9]
alist.pop()      #默认删除最后一个元素

del alist[2]     #指定索引位置删除
结果:[1,2,2,4,5,9,6,7,8,9]
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容