鱼C论坛

 找回密码
 立即注册
查看: 2553|回复: 5

filter 与 lambda 组合问题

[复制链接]
发表于 2017-5-27 09:06:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
[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 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开始 而 用filter与lambda 是从3开始呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-5-27 09:33:57 | 显示全部楼层
哦哦 明白了 filter 是返回后面参数列表Ture的值 ,明显 0 不会被返回
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-27 09:36:33 | 显示全部楼层
list(filter((lambda x: x % 3 == 0), range(100)))

评分

参与人数 1鱼币 +5 收起 理由
SixPy + 5 支持楼主!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-27 09:40:23 | 显示全部楼层
yama 发表于 2017-5-27 09:33
哦哦 明白了 filter 是返回后面参数列表Ture的值 ,明显 0 不会被返回

厉害了,我还思考了好一会
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-27 09:41:41 | 显示全部楼层
你可以直接输入
list(filter((lambda x:x if x%3==0 else None),[0]))
返回应该是[]
因为lambda x:x if x%3==0 else None,当x=0时,返回值也是0,而0对于filter来说,表示False,所以不会有输出,只有为True或者非零的值才会被filter返回。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-5-27 16:09:11 | 显示全部楼层
yama 发表于 2017-5-27 09:33
哦哦 明白了 filter 是返回后面参数列表Ture的值 ,明显 0 不会被返回

你理解错了
filter 不需要具体值,要的是判断条件

3楼是正确的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-8 06:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表