Python lambda if语句-你必须有else吗?



例如,我有下面的列表,我想只打印出偶数#s -我想使用lambda。我的问题是我是否需要在if中有一个else ?

_l = [1, 2, 3, 4, 5, 6]
_l2 = list(map(lambda x: x if x % 2 == 0 else "", _l))

我不想用else…

这不是if语句,这是一个条件表达式。Python条件表达式的形式是z if x else y,所以是的,您确实需要else

但是,看起来您实际上只是试图过滤列表,因此,如果您想要一个单行代码,请使用带有if片段的列表推导:

l2 = [x for x in l if x % 2 == 0]

如果你很难理解列表,可以使用filter。如果你坚持使用lambda并且想要编写函数式编程,可能会更容易掌握。

_l2 = list(filter(lambda x: (x % 2 == 0), _l))

谢谢大家-我可以定义列表理解也可以使用过滤器-这就是我所做的(发表在评论中)。

我想我真正想问的是,我可以在lambda中有一个if语句而没有else吗?

所以对于上面的是的,我使用过滤器-基本上:

_l = [x for x in range(0,100,1)]

_l2 = list (map (lambda x:x if x%2 == 0 else None, _l))

_l3 = list (filter (None, _l2))

但是我的问题是Do我需要else ?

感谢

相关内容

  • 没有找到相关文章

最新更新