我正在编写一个简单的函数来从列表中取出所有奇数并返回一个仅包含偶数的列表。
def purify(numbers):
for i in numbers:
if i%2!=0:
numbers.remove(i)
return numbers
print(purify([4,5,5,4]))
但是,上面的返回:
[4, 5, 4]
为什么不删除第二个 5,因为它也满足 if 条件?
我不再寻找解决问题的不同方法,而是更多地了解为什么会发生这种情况。
请您参考如下方法:
当您删除一个项目时,后面的项目会向左移动一个位置。这会导致循环跳过一些项目。
顺便说一句,编写该代码的更惯用的方法是
numbers = [num for num in numbers if num % 2 == 0]
