列表_元素的5种添加方式_效率问题
1 列表元素的增加
当列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担。但这个特点涉及列表元素的大量移动,效率较低。
⚠️除非必要,我们一般只在列表的尾部添加元素或删除元素,这会大大提高列表的操作效率。
2 append()方法
原地修改列表对象,是真正的列表尾部添加新的元素,速度最快,推荐使用。
a = [20,40]
a.append(80)
print(a) #结果:[20, 40, 80]
3 +运算符操作
并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。
a = [20,40]
print(id(a))
a = a+[50]
print(id(a)) #两次地址不一样,创建了新的对象
通过如上测试,我们发现变量a的地址发生了变化。也就是创建了新的列表对象。
4 extend()方法
将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。
a = [20,40]
print(id(a))
b = [50,60]
a.extend(b) #原对象修改
print(id(a))
a = a+b #产生新对象
print(id(a))
5 insert()插入元素
使用insert()
方法可以将指定的元素插入到列表对象的任意制定位置。这样会让插入位置后面所有的元素进行移动,会影响处理速度。涉及大量元素时,尽量避免使用。类似发生这种移动的函数还有:remove()
、pop()
、del()
,它们在删除非尾部元素时也会发生操作位置后面元素的移动。
a = [10,20,30]
a.insert(2,100)
print(a) #结果:[10, 20, 100, 30]
6 乘法扩展
使用乘法扩展列表,生成一个新列表,新列表元素是原列表元素的多次重复。
a = ['sxt',100]
b = a*3
print(a) #结果:['sxt', 100]
print(b) #结果:['sxt', 100, 'sxt', 100, 'sxt', 100]
适用于乘法操作的,还有:字符串、元组。例如:
c = 'sxt'
d = c*3 #结果:'sxtsxtsxt'