例如,我有下面的列表,我想只打印出偶数#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 ?
感谢