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).