不明白这个过滤器为何会过滤掉0

不明白这个过滤器为何会过滤掉0

def use_filter(data):
    # 使用result接收filter过滤偶数值的功能
    if data % 2 == 0:
        return data
if __name__ == '__main__':
    # 使用data接收0-50的数值
    data = list(range(51))
    # 调用use_filter函数传入data,使用result变量接收
    result = filter(use_filter, data)
    # result = filter(lambda data: data % 2 == 0, data)
    print(list(result))

为何该代码运行结果为:
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
始终不明白为什么0被漏掉了

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小猿 2024-01-15 16:16:18

同学,你好!是filter 函数把0过滤掉的,当data=0传入到use_filter()函数中,函数的返回值是0,0是False,filter函数把false的值过滤掉了,所以没有0。

祝学习愉快~

  • 提问者 Michael_FCY #1

    那如何修改呢,在不使用lambda的情况下

    2024-01-15 19:17:54
  • 好帮手慕小猿 回复 提问者 Michael_FCY #2

    同学,你好!可以使用return str(data)将0 改成字符串的“0”,字符串“0”为真,不会过滤掉0。返回传入的0到result 迭代器中,不会过滤掉0。

    https://img1.sycdn.imooc.com/climg/65a6584e09e6334010340567.jpg

    祝学习愉快~

    2024-01-16 18:22:24
  • 提问者 Michael_FCY 回复 好帮手慕小猿 #3

    非常感谢!

    2024-01-16 22:19:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师