列表理解,语法无效

时间:2014-05-04 07:53:29

标签: python python-3.x

我想我可能会遗漏一些明显的东西,但为什么编译器会在列表推导中的'for'之后引发'SyntaxError:invalid syntax'?

num = str(2**1000)
print(num) 
sum = 0
print(sum[ int(num[i]) for i in range(len(num)) ])

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

这里sum = 0您将内置函数名称重新绑定到变量名称,这使函数调用sum(some_sequence)无效。不要将任何内置类型/函数名称用作自定义变量名称。

此外,sum[ ... ]无效,请使用sum(...),因为它是一个功能。

答案 1 :(得分:3)

您已将sum分配给整数0

接下来,当您真正想要sum[...]时,您尝试使用sum( )在您的理解中将其作为列表进行访问。

为了 你需要摆脱sum = 0,因为Python不会使用内置方法sum()而是会相当于{ {1}}并提出另一个错误。

您也不需要0(),因为您可以直接单步执行字符串。

把所有这些放在一起,你有:

for i in range(num)

您也不需要内部列表。

或者,另一种更紧凑的方式:

print(sum(int(i) for i in num)))