当前位置: 首页 > 面试题库 >

单行列表理解:if-else变体

祁驰
2023-03-14
问题内容

更多有关python列表理解语法的信息。我有一个列表推导,它产生给定范围的奇数列表:

[x for x in range(1, 10) if x % 2]

这构成了一个过滤器-我有一个源列表,其中删除了偶数(if x % 2)。我想在这里使用if-then-else之类的东西。以下代码失败:

>>> [x for x in range(1, 10) if x % 2 else x * 100]
  File "<stdin>", line 1
    [x for x in range(1, 10) if x % 2 else x * 100]
                                         ^
SyntaxError: invalid syntax

有一个类似if-else的python表达式:

1 if 0 is 0 else 3

如何在列表理解中使用它?


问题答案:

x if y else z是您要为每个元素返回的表达式的语法。因此,您需要:

[ x if x%2 else x*100 for x in range(1, 10) ]

混淆是由于您在第一个示例中使用 过滤器 而在第二个示例中没有使用 过滤器 。在第二个示例中,您仅使用三元运算符表达式 每个值 映射
到另一个。

使用过滤器,您需要:

[ EXP for x in seq if COND ]

没有过滤器,您需要:

[ EXP for x in seq ]

在第二个示例中,该表达式是一个“复杂”表达式,其中恰好包含一个if-else



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

  • 我试图创建一个列表,其中偶数显示为原样,奇数显示为“奇数”。 这是我正在尝试的代码。 我希望得到这样的东西 但我不断收到语法错误异常: 我做错了什么?

  • Perl条件语句有助于决策,这需要程序员指定一个或多个要由程序评估或测试的条件,以及在条件被确定为真时要执行的一个或多个语句,以及可选的其他条件如果确定条件为假,则执行语句。 以下是大多数编程语言中的典型决策结构的一般性 - 数字0,字符串'0'和“”,空列表()和undef在布尔上下文中都是false ,所有其他值都为true 。 否定真正的价值! 或not返回特殊的假值。 Perl编程语言提供

  • 本文向大家介绍C# if, if...else, if... else if ,包括了C# if, if...else, if... else if 的使用技巧和注意事项,需要的朋友参考一下 示例 该if语句用于控制程序的流程。一条if语句根据Boolean表达式的值标识要运行的语句。 对于单个语句,braces{}是可选的,但建议使用。 该if还可以有一个else条款,将在案件条件的计算结果来执

  • if语句之后可以跟一个可选的else if...else语句,这对于使用单个if ... else if语句测试各种条件非常有用。 当使用if...else if…else语句时,请记住 - 一个if可以有零个或一个else语句,它必须在任何其他if之后。 如果语句可以有零到多个if,它们必须在else之前。 一旦else if成功,其余的if或else语句都不会被测试。 if ... else

  • 本文向大家介绍对vue v-if v-else-if v-else 的简单使用详解,包括了对vue v-if v-else-if v-else 的简单使用详解的使用技巧和注意事项,需要的朋友参考一下 首先vue.js请注意 2.1.0版本以上方可使用v-else-if 页面展示如下: vue.js下载:https://github.com/vuejs/vue 以上这篇对vue v-if v-els