使用三元运算符传递语法错误

pass giving syntax error with ternary operator

我能够成功执行以下条件表达式:

[i if i%2 != 0 else None for i in range(10)]

输出:

[None, 1, None, 3, None, 5, None, 7, None, 9]

但是,我不想添加 None 并且只保留列表中的奇数。

为此,我正在执行以下代码:

[i if i%2 != 0 else pass for i in range(10)]

以上语句报错:

SyntaxError: invalid syntax

这里使用 pass 有什么问题? 为什么 pass 不能作为三元运算符的操作数?

[i for i in range(10) if i%2 !=0] 是您要查找的过滤器语法

**值得注意的是,如果您正在做一些事情,比如创造赔率(我假设您的实际使用更复杂),我会使用类似 list(range(1,n,2)) 的东西,其中范围包含 range(start, stop, step)

问题是 pass 没有返回值并且不能是三元运算符的操作数。 鉴于您的意图只是获得奇数,为什么不简单地使用两个

的步骤进行迭代
[i for i in range(1, 10, 2)]