我正在尝试创建一个函数,它将列出所有小于n的多维数据集。然后所有这些数字一起打印出来然而.count()不能像我希望的那样工作。有没有办法计算列表的每个数字,还是我必须逐个浏览列表才能将它们添加起来?
def sum_cubes_less(n):
'''Return the sum of the cubes of the positive integers less than n.'''
x = 1
cubes = [x**3 for x in range(1,n)]
return cubes.count()
print(sum_cubes_less(2**8))
答案 0 :(得分:2)
count
用于计算列表中出现的次数。
您希望使用sum
来汇总所有多维数据集。
此外,您可以通过计算多维数据集然后添加到总和来避免将所有多维数据集保存在内存中的列表中(因为您只需要总和)。
def sum_cubes_less(n):
'''Return the sum of the cubes of the positive integers less than n.'''
return sum(x**3 for x in range(1, n))
编辑:使用生成器形式更简单,更轻,更快。
答案 1 :(得分:2)
您不需要对所有多维数据集求和,可以使用((n( n + 1) / 2)^2)
计算前n个多维数据集的总和:
In [6]: n = 25
In [7]: sum(x ** 3 for x in range(1, n+1))
Out[7]: 105625
In [8]: (n * ( n + 1) / 2) ** 2
Out[8]: 105625
如果您使用的是范围,则需要使用n+1
在结果中包含n。
不包括n只从n中减去1:
In [16]: n = 25
In [17]: sum(x ** 3 for x in range(1, n))
Out[17]: 90000
In [18]: n -= 1
In [19]: (n * ( n + 1) // 2) ** 2
Out[19]: 90000
答案 2 :(得分:1)
答案 3 :(得分:1)
您正在寻找sum()
替换return cubes.count()
与return sum(cubes)
享受
答案 4 :(得分:0)