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

What’s wrong with my ternary expression or mapping in Python?

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

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

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

你说的三元表达式部分是对的。 Python 不允许您在没有 else 的情况下使用语法:var = <action> if <condition> 因为在 <condition> == False 的情况下,var 变得未知。

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

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