0 python
我正在尝试创建一个列表,其中偶数显示为偶数,奇数显示为"奇数".
这是我正在尝试的代码.
lst = [if x % 2 == 0 else 'odd' for x in range(11)]
Run Code Online (Sandbox Code Playgroud)
我希望得到这样的东西
[0, "odd", 2, "odd", 4, "odd", 6, "odd", 8, "odd", 10]
Run Code Online (Sandbox Code Playgroud)
但我一直有SyntaxError异常:
>>> lst = [if x % 2 == 0 else 'odd' for x in range(11)]
File "<stdin>", line 1
lst = [if x % 2 == 0 else 'odd' for x in range(11)]
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
你错过了x之前if:
lst = [x if x % 2 == 0 else 'odd' for x in range(11)]
Run Code Online (Sandbox Code Playgroud)
Python的条件表达式语法 具有同时具有"真"和存在于"假"表达式,因此true_expr if condition else false_expr,其中之一true_expr或false_expr将基于所述的真值来评估condition表达.
演示:
>>> [x if x % 2 == 0 else 'odd' for x in range(11)]
[0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd', 10]
Run Code Online (Sandbox Code Playgroud)
请注意,使用条件表达式不会过滤,它始终生成输出.对于list comprehenion语法的per-iteration表达式来说这很好,但如果你想过滤输入列表并完全删除奇数值,那么在循环后使用if condition测试:for ... in ...
>>> [x for x in range(11) if x % 2 == 0] # filtering, only even numbers
[0, 2, 4, 6, 8, 10]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |