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]
我需要检索一个列表(我们称之为 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]