如何在我的代码中修复“ SyntaxError:生成器表达式必须为括号”?

时间:2019-10-29 08:44:29

标签: python python-3.x python-3.7.4

我想编写一个程序来查找以数字为输入的平方和。如果我给我的代码5,它应该返回(0 ^ 2 + 1 ^ 2 + 2 ^ 2 + 3 ^ 2 + 4 ^ 2 + 5 ^ 2 = 55)。

sum(list(map(lambda x:i**2 for i in range(x+1),5)))

但是我有这样的错误。

sum(list(map(lambda x:i**2 for i in range(x+1),55)))
            ^
SyntaxError: Generator expression must be parenthesized

2 个答案:

答案 0 :(得分:0)

您不需要使用map

sum(i**2 for i in range(x + 1))

答案 1 :(得分:0)

就像盖伊提到的那样,如果您只是在累积总和之后,那么下面的代码块就足够了

sum(i**2 for i in range(x+1))

map函数从传入的表达式/迭代器返回迭代器。因此,可以说,如果要迭代从0..5开始的数字平方,则跟随将返回0、1、4、9、16,并可在for loop

的帮助下进行迭代。
    result_iterator= map(lambda x: x**2, range(5))
    for i in result_iterator:
        print(i)