使用三元运算符传递语法错误
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)]
我能够成功执行以下条件表达式:
[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)]