|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题背景,第21讲课后习题,第三题。
我写的是:
list(filter(lambda x:x if x%3==0 and x != 0 else None,range(100)))
后来发现不要 x != 0, 输出结果不变。
甚至:
>>> list(filter(lambda x:x if x%3==0 else None,[0]))
[]
这里[0]为什么不能输出呢?
但直接输出是可以的,比如:
>>> [0]*2
[0, 0]
>>> [0]
[0]
求教,谢谢🙏
本帖最后由 Twilight6 于 2020-6-21 11:45 编辑
一个列表 里面有个元素 0
filter 函数是用来筛选用的 当返回 True时候留下,False 时候去掉
filter 第一个参数是函数 function,第二个参数可迭代对象 iterable
而你:>>> list(filter(lambda x:x if x%3==0 else None,[0]))
可迭代对象只有一个 [0] ,0%3 == 0 条件成立 返回 x = 0 而 filter 筛选 0 时候 0可以看成bool类型值的 False 所以过滤了
导致输出的是 [] 空列表
|
|