微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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 列表理解语法。我有一个列表理解,可以生成给定范围的奇数列表:

[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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。