零基础入门学习python(021)问题求助
本帖最后由 孤城孑 于 2020-4-25 10:47 编辑>>>
>>> list(filter(lambda x:x%3==0,range(100)))
>>> list(filter(lambda x:x if x%3==0 else None,range(100)))
这里为什么第一二种代码可以筛选出0,第三种就不可以
>>> g=(lambda x:x if x%3==0 else None)
>>> g(0)
0
明明这样就是可以返回0的 改成这样:
>>> list(filter(lambda x:True if x%3==0 else None,range(100)))
好像filter在执行完后,会自己过滤一遍假值 qiuyouzhi 发表于 2020-4-25 11:13
改成这样:
好像filter在执行完后,会自己过滤一遍假值
哦哦,我明白了,是不是在
lambda x: x%3==0
对于0是返回真,
而在
lambda x:x if x%3==0 else None
对于0返回0还是假
谢谢你嘻嘻 孤城孑 发表于 2020-4-25 11:25
哦哦,我明白了,是不是在
对于0是返回真,
第二个返回的是x,也就是说,最后还会判断一遍结果中的数字是否都为真
0不为真,所以会剔除掉。
页:
[1]