13

有没有办法比 for 循环更快地总结一个数字列表,也许在 Python 库中?还是只有多线程/矢量处理才能有效地做到这一点?

编辑:为了澄清,它可以是任何数字的列表,未排序,只是来自用户的输入。

4

5 回答 5

35

您可以使用 sum() 对数组的值求和。

a = [1,9,12]
print sum(a)
于 2009-05-12T02:22:50.047 回答
4

用循环时间总结列表的另一种方法:

    s = reduce(lambda x, y: x + y, l)
于 2009-05-12T06:56:34.733 回答
1

如果列表中的每一项都简单地增加 1,或者如果您可以在系列中找到一个模式,您可以找到一个求和 n 项的公式。例如,级数 {1,2,3,...,n} 的和 = n(n+1)/2

在这里阅读更多

于 2009-05-12T02:24:49.607 回答
1

好吧,我不知道它是否更快,但您可以尝试一些微积分来使其成为一次操作。(N*(N+1))/2 给出从 1 到 N 的每个数字的总和,还有其他公式可以解决更复杂的总和。

于 2009-05-12T02:26:32.833 回答
-1

对于一般列表,您必须至少检查每个成员至少一次才能得到总和,这正是 for 循环所做的。使用库 API(如 sum)更方便,但我怀疑它实际上会更快。

于 2009-05-12T02:31:29.720 回答