写在最前面:
假设给定一个列表,包含多个相同的重复元素,如何删除?
a = [-1, 0, 0, 0, 0, 0, 1, 2, 2, 3, 3, 3]
对于这个list,我想把0全部去掉。
我们都知道,remove()函数只能删除第一个指定的元素
a.remove(0)
结果是
[-1, 0, 0, 0, 0, 1, 2, 2, 3, 3, 3]
那很容易想到通过遍历,使用del操作删除列表元素
for i in range(len(a)):
if a[i] == 0:
del a[i]
但是这样是不行的
IndexError: list index out of range
报了列表索引超长。这是因为当你del之后,列表的长度变了,但是循环的次数没有变,当你试图取超过此时的列表长度的索引时就会报错。
给个解决方案:
while 0 in a:
a.remove(0)