我想我可能会遗漏一些明显的东西,但为什么编译器会在列表推导中的'for'之后引发'SyntaxError:invalid syntax'?
num = str(2**1000)
print(num)
sum = 0
print(sum[ int(num[i]) for i in range(len(num)) ])
有什么想法吗?
答案 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)))