添加列表中的内容

时间:2015-09-02 15:48:50

标签: python list

我正在尝试创建一个函数,它将列出所有小于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))

5 个答案:

答案 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)

变化

return cubes.count()

return sum(cubes)

查看official doc

答案 3 :(得分:1)

您正在寻找sum()

替换return cubes.count()return sum(cubes)

享受

答案 4 :(得分:0)

您想使用sum执行此任务。

return sum(cubes)

这将为1065369600的输入值返回2**8

.count()返回特定项目在列表中的次数。你必须传递一个值来检查:

return cubes.count(27)

这将返回1,因为3 * 3 * 3为27,该值出现1次。