gpt4 book ai didi

python - 如何在列表理解中使用条件表达式(带有 if 和 else 的表达式)?

转载 作者:IT老高 更新时间:2023-10-28 12:29:09 26 4
gpt4 key购买 nike

我有一个列表推导,可以生成给定范围的奇数列表:

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

这会生成一个过滤器来删除偶数。相反,我想使用条件逻辑,以便对偶数进行不同的处理,但仍对列表有所贡献。我试过这段代码,但失败了:

>>> [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

我知道 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 - 如何在列表理解中使用条件表达式(带有 if 和 else 的表达式)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17321138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com