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

发布于 2021-01-29 19:33:46

更多有关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

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

关注者
0
被浏览
64
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看