我需要检索小于5的每个元素的double的列表(让我们称之为list1
)并将它们放在另一个列表中(让我们称之为list2
)。我尝试使用如下地图,但出于某种原因我得到了无效的语法:
list2 = map(lambda x: x*2 if x < 5, list1)
我怀疑这是因为三元表达式需要else
条件。是吗?我该怎么办呢?
答案 0 :(得分:2)
你对三元表达部分是正确的。 Python不允许您使用var = <action> if <condition>
而不使用else
的语法,因为在<condition> == False
,var
变为未知的情况下。
你真的不需要地图,但是,你可以使用列表推导,因为它们不仅可以解决你的问题,而且比映射更有效:
list2 = [x*2 for x in list1 if x < 5]