CharlesDWong 2021-09-19 12:56 采纳率: 100%
浏览 60
已结题

提问:python用filter()取3的倍数,两种方法出现两种结果

如图两个函数,理论上逻辑是一样的,为何运行结果一个包含0,一个不包含0。
有热心人可以解惑吗?谢谢!

img

  • 写回答

2条回答 默认 最新

  • 关注

    filter函数是根据前面判断函数的真假来进行的,因为0传入时lambda函数返回的是0,所以认为为假,故结果中不包含零
    将式1中lambda函数修改如下即可正确判断

    print(list(filter(lambda x:1 if( (x % 3) == 0) else  0, range(101))))
    print(list(filter(lambda x: not (x % 3), range(101))))
    

    有帮助望采纳~~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月27日
  • 已采纳回答 9月19日
  • 创建了问题 9月19日