如何在python中汇总数字列表

FZE*_*ROX 4 python numbers sum

首先,我需要从455,111,451到455,112,000的范围内提取数字.我可以手动完成,我只需要50个数字,但这不是重点.

我试过了:

for a in range(49999951,50000000):
print +str(a)
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

Inb*_*ose 14

使用 sum

>>> sum(range(49999951,50000000))
2449998775L
Run Code Online (Sandbox Code Playgroud)

它是一个内置函数,这意味着您无需导入任何内容或执行任何特殊操作即可使用它.在你问这里之前,你应该总是查阅文档或教程,以防它已经存在 - 而且,StackOverflow还有一个搜索功能,可以帮助你找到问题的答案.


sum这种情况下功能,以整数的列表,并逐步将其添加到海誓山盟,以类似的方式如下:

>>> total = 0
>>> for i in range(49999951,50000000):
    total += i

>>> total
2449998775L
Run Code Online (Sandbox Code Playgroud)

另外 - 类似于Reduce:

>>> reduce(lambda x,y: x+y, range(49999951,50000000))
2449998775L
Run Code Online (Sandbox Code Playgroud)


Jon*_*nts 5

sum这是显而易见的方法,但是如果你有一个巨大的范围并且通过每次增加每个数字来计算总和可能需要一段时间,那么你可以用数学方式来做这个(如图所示sum_range):

start = 49999951
end = 50000000

total = sum(range(start, end))

def sum_range(start, end):
    return (end * (end + 1) / 2) - (start - 1) * start / 2

print total
print sum_range(start, end)
Run Code Online (Sandbox Code Playgroud)

输出:

2449998775
2499998775
Run Code Online (Sandbox Code Playgroud)

  • 让我重新说一下,"这是**这个**问题的更好解决方案". (2认同)