我正在尝试创建一个列表,其中偶数按原样显示,奇数按“奇数”显示。
这是我正在尝试的代码。
lst = [if x % 2 == 0 else 'odd' for x in range(11)]
我希望得到这样的东西
[0, "odd", 2, "odd", 4, "odd", 6, "odd", 8, "odd", 10]
但是我不断收到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
我在做什么错了?
答案 0 :(得分:6)
您在x
之前缺少if
:
lst = [x if x % 2 == 0 else 'odd' for x in range(11)]
Python conditional expression syntax 必须同时存在'true'和'false'表达式,因此true_expr if condition else false_expr
中true_expr
或{ {1}}将根据false_expr
表达式的真值进行评估。
演示:
condition
请注意,使用条件表达式不会过滤,它将始终产生输出。这对于列表理解语法的每次迭代表达式而言非常有用,但是如果您要过滤输入列表并完全删除奇数,请在{em之后使用>>> [x if x % 2 == 0 else 'odd' for x in range(11)]
[0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd', 10]
测试 {{ 1}}循环:
if condition
答案 1 :(得分:1)
这是您想要的吗?
[x if x % 2 == 0 else 'odd' for x in range(11)]
[0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd', 10]
如果是这种情况,那么您只是想在列表理解中缺少一些要返回的内容,在这种情况下,如果满足条件,则想返回x
。
答案 2 :(得分:1)
lst = [x if x % 2 == 0 else 'odd' for x in range(11)]
有关列表理解和三元运算符的更多详细信息,请点击以下链接: https://docs.python.org/3/tutorial/datastructures.html#list-comprehensions https://docs.python.org/3/faq/programming.html#is-there-an-equivalent-of-c-s-ternary-operator
答案 3 :(得分:1)
您缺少if语句为true时应显示的值
[if x % 2 == 0 else 'odd' for x in range(11)]
应该是
[x if x % 2 == 0 else 'odd' for x in range(11)]