马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 孤城孑 于 2020-4-25 10:47 编辑
- >>> [x for x in range(100) if x%3==0]
- [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
复制代码- >>> list(filter(lambda x:x%3==0,range(100)))
- [0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
- >>> list(filter(lambda x:x if x%3==0 else None,range(100)))
- [3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
复制代码
这里为什么第一二种代码可以筛选出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在执行完后,会自己过滤一遍假值
|