当前位置:  开发笔记 > 编程语言 > 正文

如何过滤列表

如何解决《如何过滤列表》经验,为你挑选了1个好方法。

我正在写一个简单的函数来从列表中取出任何奇数,并返回一个只有偶数的列表.

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?

我不太关注问题的不同方法,而是更多地了解为什么会发生这种情况.

谢谢,对不起,如果这是愚蠢的......乔



1> NPE..:

删除项目时,后面的项目会向左移动一个位置.这导致循环跳过一些项目.

顺便说一下,编写代码的更惯用的方法是

numbers = [num for num in numbers if num % 2 == 0]

推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有