我只想返回列表中的奇数

新手上路,请多包涵

我这里的问题是代码正确地过滤掉了偶数,这是我想要的,但是它停在 7 处并且不显示数字 9,这是我期望它做的。我试过检查我的代码,但我似乎找不到问题所在

def remove_even(numbers) :
    new_list = []
    for i in range(0,len(numbers)-1) :
        if i % 2 != 0 :
            new_list.append(i)
    return new_list
l = [1,2,3,4,5,6,7,8,9,10]
print(remove_even(l))

原文由 I liek to c0d3 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 379
2 个回答

您应该直接循环遍历您的值而不是索引

for i in numbers:

否则,如果你想使用 range 你必须索引到你的 list

 for i in range(0, len(numbers)):
    if numbers[i] % 2 != 0 :
        new_list.append(numbers[i])

为简洁起见,列表理解非常适合此类任务

>>> new_list = [num for num in l if num % 2 == 1]
>>> new_list
[1, 3, 5, 7, 9]

原文由 Cory Kramer 发布,翻译遵循 CC BY-SA 3.0 许可协议

[k for k in l if k %2]

是一个返回的简单 列表理解

[1, 3, 5, 7, 9]

原文由 e4c5 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题