我刚开始使用Python,正在阅读有关列表理解的信息。
以下代码:
my_list = [x ** x for x in range(1,11) if x % 2 == 0]
print(my_list)
...产生以下输出:
[4, 256, 46656, 16777216, 10000000000]
然后我尝试了以下代码:
my_list = [x ** x for x in range(1,11) if x % 2 == 0 else 7]
print(my_list)
...但是我从其他的第二个“ e”开始出现语法错误。
有人可以解释为什么我遇到语法错误吗?我想让列表基于底数(x)的值创建偶数平方的列表,并且如果列表值不是“偶数”平方,则希望具有值“ 49”。
答案 0 :(得分:0)
在这种情况下,您需要
my_list = [x ** x if x % 2 == 0 else 49 for x in range(1,11)]
如果您像这样在列表理解的末尾使用if
,则它用于选择要包含的 个元素。如果要根据情况获得不同的结果,则需要在开头使用三元if
。
有关更多信息,请查看文档here。引用:
列表推导由包含表达式的方括号组成,后跟一个for子句,然后是零个或多个for或if子句。结果将是一个新列表,该列表是通过在其后的for和if子句的上下文中评估表达式而得出的。
这里不支持else
,大概是因为理解的“主体”中的三元if
(if condition then foo else bar
)已经完成了此任务,"There should be one-- and preferably only one --obvious way to do it." >