当前位置: 首页 > 知识库问答 >
问题:

如何在列表理解中使用if/else?[副本]

糜运良
2023-03-14

我试图创建一个列表,其中偶数显示为原样,奇数显示为“奇数”。

这是我正在尝试的代码。

lst = [if x % 2 == 0 else 'odd' for x in range(11)]

我希望得到这样的东西

[0, "odd", 2, "odd", 4, "odd", 6, "odd", 8, "odd", 10]

但我不断收到语法错误异常

>>> lst = [if x % 2 == 0 else 'odd' for x in range(11)]
  File "<stdin>", line 1
    lst = [if x % 2 == 0 else 'odd' for x in range(11)]
            ^
SyntaxError: invalid syntax

我做错了什么?

共有3个答案

葛承嗣
2023-03-14
lst = [x if x % 2 == 0 else 'odd' for x in range(11)]

有关列表理解和三元运算符的更多详细信息,请链接:https://docs.python.org/3/tutorial/datastructures.html#list-comprehensionshttps://docs.python.org/3/faq/programming.html#is-there-an-equivalent-of-c-s-ternary-operator

荀裕
2023-03-14

这是你想要的吗?

[x if x % 2 == 0 else 'odd' for x in range(11)]
[0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd', 10]

如果在这种情况下,您只是在列表理解中缺少要返回的内容,那么在这种情况下,如果满足条件,您希望返回x。

姬博瀚
2023-03-14

如果出现以下情况,则缺少前面的x:

lst = [x if x % 2 == 0 else 'odd' for x in range(11)]

Python条件表达式语法必须同时存在“true”和“false”表达式,因此如果条件为false,则必须存在“true\u expr if condition else false\u expr”,其中将根据条件表达式的真值计算“true\u expr或“false\u expr中的一个。

演示:

>>> [x if x % 2 == 0 else 'odd' for x in range(11)]
[0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd', 10]

请注意,使用条件表达式不会过滤,它总是生成输出。这对于列表理解语法的每次迭代表达式方面来说是很好的,但是如果您想过滤输入列表并删除奇数值,那么在对以下内容进行测试之后使用if条件测试。。。在 循环:

>>> [x for x in range(11) if x % 2 == 0]  # filtering, only even numbers
[0, 2, 4, 6, 8, 10]
 类似资料:
  • 问题内容: 如何在Python中执行以下操作? 实质上: 用空字符串替换所有的None,然后 执行功能。 问题答案: 你可以完全做到这一点,这只是一个订购问题: 一般来说, 而且,if仅对于具有条件的列表理解而言, 请注意,这实际上使用了一种不同的语言构造,即条件表达式,它本身不是理解语法的一部分,而ifafter则for…in是列表理解的一部分,用于从可迭代的源中筛选元素。 条件表达式可用于各种

  • 问题内容: Python 2.7+中是否存在一种进行以下操作的方法? 我知道您只要使用’if’就可以做任何事情: 问题答案: 您已经知道了:是有效的Python表达式。所示的dict理解的唯一问题是dict理解中表达式的位置必须有两个表达式,并用冒号分隔: final子句充当过滤器,这与具有条件表达式不同。

  • 我试图通过这段代码来展示我对Python的基础知识的了解,并且它可以工作: 我还想通过这段代码展示我对Java基础知识的了解,但它不起作用: 我很困惑,因为这一个确实有效: 你们知道怎么了吗?

  • 问题内容: 更多有关python列表理解语法的信息。我有一个列表推导,它产生给定范围的奇数列表: 这构成了一个过滤器-我有一个源列表,其中删除了偶数()。我想在这里使用if-then-else之类的东西。以下代码失败: 有一个类似if-else的python表达式: 如何在列表理解中使用它? 问题答案: 是您要为每个元素返回的表达式的语法。因此,您需要: 混淆是由于您在第一个示例中使用 过滤器 而

  • 在Thymeleaf中有没有更好的方法来做下面的事情? 例如,在django中,它非常简单:

  • 我想比较一下id,这里,如果id等于5,做这个,否则做那个。我怎样才能做到这一点?