pythonlambdaif语句_菜鸟提问:lambda后接if
wuli陈
2017-11-16 21:16
我刚开始也是不明⽩,仔细想了想,其实是对filter()函数没搞清楚,其实在fiiter()函数⾥⾯那个判断函数f()只是⽤来返回true或者False。当为True时,则保留该元素;当为False时,则不保留该元素。所以,⼀定要记住filter()⾼阶函数⾥⾯的那个判断函数f()返回的只是True 或者False,
(1)print filter(lambda s: s and len(s.strip()) > 0, ['test', None, '', 'str']) # 正确使⽤
(2)print filter(lambda s: s if len(s.strip()) > 0, ['test', None, '', 'str'])  # 报错
菜鸟教程python函数(3)myabs = lambda x: -x if x < 0 else x  # 正确使⽤
这三条语句⾥⾯,第三条语句正确是理所当然的,⾄于第⼆条语句为什么错,根本原因不是因为什么if,and,⽽是filter()这个⾼阶函数,作为这个⾼阶函数⾥的判断函数,本应该返回true或false,结果第⼆条语句直接返回了列表⾥的⼀个元素,所以肯定报错啊!⾄于第⼀条为什么正确,是因为lambda s: s and len(s.strip()) > 0这个匿名函数中的s=(s and len(s.strip()) > 0)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。