我正在写一个简单的函数来从列表中取出任何奇数,并返回一个只有偶数的列表.
def purify(numbers):
for i in numbers:
if i%2!=0:
numbers.remove(i)
return numbers
print purify([4,5,5,4])
Run Code Online (Sandbox Code Playgroud)
当在上面应用时
它返回:[4,5,4]为什么第二个5被删除,因为它也证明了if?
我不太关注问题的不同方法,而是更多地了解为什么会发生这种情况.
谢谢,对不起,如果这是愚蠢的......乔
NPE*_*NPE 15
删除项目时,后面的项目会向左移动一个位置.这导致循环跳过一些项目.
顺便说一下,编写代码的更惯用的方法是
numbers = [num for num in numbers if num % 2 == 0]
Run Code Online (Sandbox Code Playgroud)
具有讽刺意味的是,我没有看到提到的一种选择是filter:
>>> filter(lambda x: not x % 2, [4,5,5,4])
[4, 4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5006 次 |
| 最近记录: |