删除过程中还能返回被删除的值
alist = ['d', 'd', 7, 4, 'd', 'd', 2, 1]
for i in range(len(alist)-1,-1,-1): # 倒序循环,从最后一个元素循环到第一个元素。不能用正序循环,因为正序循环删除元素后后续的列表的长度和元素下标同时也跟着变了,len(alist)是动态的。
if alist[i] == 'd':
alist.pop(i) # 将index=i处的元素删除并return该元素。如果不想保存这个被删除的值只要不把alist.pop(i)赋值给变量就好,不影响程序运行。
print(alist) # [7, 4, 2, 1]
remove在for循环中动态改变了list长度和每一个元素的位置,不会把指定元素全部删掉。
从右往左,删除首次出现的指定元素
删除过程不会返回被删除的值
>>> alist = ['d', 'd', 7, 4, 'd', 'd', 2, 1]
>>> for i in range(len(alist)-1,-1,-1): # 同样不能用正序循环,for i in range(0,len(alist)), 用了remove()之后,len(alist)是动态的,会产生列表下标越界错误
if alist[i] == 'd':
alist.remove('d') # 从左往右删除首次出现的值为‘d'的元素
>>> alist
[7, 4, 2, 1]
>>>
>>>
del按照索引删除字符,返回值不可以付给其他的变量。
参考网址:
Python删除list中多个相同元素