我的三元表达式或Python中的映射有什么问题?

时间:2015-11-27 18:32:49

标签: python dictionary ternary

我需要检索小于5的每个元素的double的列表(让我们称之为list1)并将它们放在另一个列表中(让我们称之为list2)。我尝试使用如下地图,但出于某种原因我得到了无效的语法:

list2 = map(lambda x: x*2 if x < 5, list1)

我怀疑这是因为三元表达式需要else条件。是吗?我该怎么办呢?

1 个答案:

答案 0 :(得分:2)

你对三元表达部分是正确的。 Python不允许您使用var = <action> if <condition>而不使用else的语法,因为在<condition> == Falsevar变为未知的情况下。

你真的不需要地图,但是,你可以使用列表推导,因为它们不仅可以解决你的问题,而且比映射更有效:

list2 = [x*2 for x in list1 if x < 5]