Python: 列出函数和 lambda 表达式
Python: list function and lambda expressions
所以我需要创建一个函数,仅使用 return.
将数字的平方和直到 n
我试过:
from functools import reduce
def soma_quadrados(n):
return sum(list(reduce(lambda x: x**2, list(range(1,n+1)))))
给出错误:lambda () takes 1 positional argument but 2 were given
我也试过了
return sum(list(reduce(lambda x: x**2, n)))
给出错误:reduce() arg 2 must support iteration
我该怎么办?
提前致谢
reduce()
传入两个参数:到目前为止累积的结果和下一个值。您的 lambda
不接受结果参数(第一个)。
如果要生成所有平方的总和,请使用 sum()
和生成器表达式:
sum(i ** 2 for i in range(1, n + 1))
或使用 map()
将整数映射到它们的平方以代替生成器表达式:
sum(map(lambda i: i ** 2, range(1, n + 1)))
如果你必须使用reduce()
,求和:
reduce(lambda r, i: r + i ** 2, range(1, n + 1), 0)
所以我需要创建一个函数,仅使用 return.
将数字的平方和直到 n我试过:
from functools import reduce
def soma_quadrados(n):
return sum(list(reduce(lambda x: x**2, list(range(1,n+1)))))
给出错误:lambda () takes 1 positional argument but 2 were given
我也试过了
return sum(list(reduce(lambda x: x**2, n)))
给出错误:reduce() arg 2 must support iteration
我该怎么办? 提前致谢
reduce()
传入两个参数:到目前为止累积的结果和下一个值。您的 lambda
不接受结果参数(第一个)。
如果要生成所有平方的总和,请使用 sum()
和生成器表达式:
sum(i ** 2 for i in range(1, n + 1))
或使用 map()
将整数映射到它们的平方以代替生成器表达式:
sum(map(lambda i: i ** 2, range(1, n + 1)))
如果你必须使用reduce()
,求和:
reduce(lambda r, i: r + i ** 2, range(1, n + 1), 0)