我收到了此代码
lista = list(range(30))
print(lista)
for i in range(0,len(lista)):
if lista[i]%3 == 0:
del lista[i]
print(lista)
如果出现错误,告诉我它超出了我的列表范围。但是,如果for循环在此列表的长度范围内,则每个i的列表索引都超出范围是没有意义的,因为它只能获取列表长度的值个数?
答案 0 :(得分:1)
您不能这样做。如果要在for循环中修改列表的大小并修改其长度,将无法获得所需的结果。
说,您可以在大小size
的列表中删除一个元素。因此,突然lista[size-1]
无效,但是您仍然要尝试访问它。
那是你的错误。范围是在调用开始时定义的,不会在每次迭代后更新。
正如淡紫色和Asier ricardo Rafales Vila所说,解决方案是lista = [i for i in range(30) if i%3 != 0]
。
答案 1 :(得分:0)
您可以通过将不是3的倍数的元素添加到新列表中来解决问题 例如:
lista = list(range(30))
print(lista)
new_lst = []
for i in range(0,len(lista)):
if lista[i]%3 != 0:
new_lst.append(lista[i])
print(new_lst)