【发布时间】:2017-02-02 04:11:23
【问题描述】:
我编写了一个函数,旨在从列表中删除所有奇数。
def purify(l):
for e in range(len(l)):
if l[e] % 2 != 0:
del l[e]
return l
v = [4, 5, 5, 6]
print purify(v)
但是当它开始执行 list v 时,它从第二个周期开始不起作用并给出错误:“IndexError: list index out of range”。为什么?代码有什么问题?
【问题讨论】:
-
删除/删除您正在迭代的列表的元素很棘手。这是可能的,但这有点像锯掉你正坐在的树枝。如果你做的不对,就会发生坏事™。 :) 但无论如何,建立一个包含您想要保留的元素的新列表会更快。删除列表元素可能很耗时:当您删除一个元素时,所有后续元素都必须向下移动,因此最好不要删除列表元素,除非它靠近列表末尾。
-
谢谢!我明白了