Python 中列表( List )中的 del,remove,和 pop 等的用法和区别

1. pop

value = List.pop(index)

pop按照索引位置删除元素;
无参数时默认删除最后一个元素
返回删除的元素值

List_pop = [1, 2, 3, 4, 5, 6]
print(List_pop.pop(1)) # 返回删除后的元素值
print("after pop", List_pop)
# 2
# after pop [1, 3, 4, 5, 6]

2. remove

remove 按照删除,删除单个元素,
删除首个符合条件的元素
返回值为空 None

List_remove = [1, 2, 2, 2, 3, 4]
print(List_remove.remove(2))
print("after remove", List_remove)
# None
# after remove [1, 2, 2, 3, 4]

3. del

del 根据索引位置来删除单个值或指定范围内的值

3.1 使用del语句删除单独元素

【注意】:del是删除引用(变量)而不是删除对象(数据),对象由自动垃圾回收机制(GC)删除

List_del_1 = [1, 2, 2, 2, 3, 4]
del List_del_1[1]
print("after del List_del_1", List_del_1)
# after del List_del_1 [1, 2, 2, 3, 4]

3.2 使用del语句删除指定范围内的值

List_del_2 = [1, 2, 2, 2, 3, 4]
del List_del_2[2:4] # 删除[2,4)索引范围内的值
print("after del List_del_2", List_del_2)
# after del List_del_2 [1, 2, 3, 4]

3.3 del 删除整个数据对象(列表、集合等)

List_del_3 = [1, 2, 2, 2, 3, 4]
del List_del_3
# print(List_del_3) # 删除后,找不到对象
# NameError: name 'List_del_3' is not defined
# 注意:del是删除引用(变量)而不是删除对象(数据),对象由自动垃圾回收机制(GC)删除

4. 列表中常用方法的时间复杂度

index() O(1)
append O(1)
pop() O(1)
pop(i) O(n)
insert(i,item) O(n)
del operator O(n)
iteration O(n)
contains(in) O(n)
get slice[x:y] O(k)
del slice O(n)
set slice O(n+k)
reverse O(n)
concatenate O(k)
sort O(nlogn)
multiply O(nk)

O括号里面的值越大代表效率越低

由此可见,如果算法中采用 pop( index) 的做法去删除数据,其实空间复杂度已经是 O(n).

发布了28 篇原创文章 · 获赞 4 · 访问量 1205

猜你喜欢

转载自blog.csdn.net/weixin_41888257/article/details/104349530