如何在python中对数字列表求和

如何在python中对数字列表求和,python,numbers,sum,Python,Numbers,Sum,首先,我需要提取455111451到455112000之间的数字。 我可以手动完成,我只需要50个数字,但这不是重点 我试图: for a in range(49999951,50000000): print +str(a) 我该怎么办?使用 它是一个,这意味着你不需要导入任何东西或做任何特殊的事情来使用它。如果已经存在,您应该在询问之前查阅文档或教程。此外,StackOverflow还有一个搜索功能,可以帮助您找到问题的答案 本例中的函数获取一个整数列表,并以如下类似的方式将它们彼此递增

首先,我需要提取455111451到455112000之间的数字。 我可以手动完成,我只需要50个数字,但这不是重点

我试图:

for a in range(49999951,50000000):
print +str(a)
我该怎么办?

使用


它是一个,这意味着你不需要导入任何东西或做任何特殊的事情来使用它。如果已经存在,您应该在询问之前查阅文档或教程。此外,StackOverflow还有一个搜索功能,可以帮助您找到问题的答案


本例中的函数获取一个整数列表,并以如下类似的方式将它们彼此递增:

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

>>> total
2449998775L
同样-类似于:


我对你的问题不太了解 如果你想得到数字的总和

sum = 0
for a in range(x,y):
    sum += a
print sum
如果要在列表中包含数字:

lst = []
for a in range(x,y):
    lst.append(a)
print lst

sum
是一种显而易见的方法,但是如果你有一个很大的范围,并且通过每次递增每个数字来计算总和可能需要一段时间,那么你可以用数学方法来代替(如
sum\u range
所示):

产出:

2449998775
2499998775

A.不要隐藏内置的
sum
函数。B.
range(x,y)
已经生成了一个列表,不需要迭代它并将每个值分配给一个新的列表……如果你注意到有人问这样的问题,他肯定是python初学者。有人已经提到使用sum,所以我给了提问的人另一个选择。B.如果我还记得rightA的话,range不会在python 3中生成列表。这仍然不是隐藏内置的
sum
(隐藏的意思是使用与…相同的名称)B的借口。这个问题没有标记为Python 2或3。。即使是这样,这也是将iterable转换为list的最不有效的方法,最好的方法就是:
list(range(x,y))
(如果它确实是Python 3并且
range()
返回iterable而不是list)原谅:)也许这个例子可以澄清我的观点。有一个经典问题要求编写一段代码,将两个大数字相加,例如,99999999999999,它们存储在一个字符串中。根据您使用的语言,您可以简单地使用一个库并添加两个大数字,但通过您自己编写的一些低级代码来解决这个问题仍然有一个学习点。我非常感谢您的回答。在询问之前,我已经搜索过了,但我想我是一个非常好的新手。我还再次搜索,因为我想避免最后的L(长)。我使用
sum(range(49999951500000))\print math.factorial(100)
很抱歉打扰您。@FZEROX您无法避免最后的
L
(长),因为数字之和的结果只是大于整数的最大值,所以它一定是长的。我不知道你所说的“我使用的是
sum(范围(499999515000000))\print math.factorial(100)
”是什么意思。如果这是一个后续问题,请问一个新问题。这是在搜索如何避免L之后出现的问题,我可能完全错了,我刚开始python和编程。好吧,
L
只作为结果值的
repr
。。。如果您
print
该值,它的末尾将不会有
L
,而
L
只是在那里让您知道它是一个长值。在我看来,这样更好。虽然不是更像pythonic,但效率更高。@JohnDoe这一切都取决于你在寻找什么-这里给出的
sum\u range
方法是一种更快、更有效的求和方法,但它只适用于特定类型的计算-X之间所有整数的总和,和Y。这里没有跳过数字、多个范围或多个类型的选项-只有X和Y之间的整数之和…:)因此,根据需要,有时更直接的方法是最好的,其他时候,更健壮、通用和可移植的方法是最好的。@在数学上稍微调整一下,它可以做到这一点,但我完全同意使用
sum
是最明显和最容易适应的解决方案。让我重新表述一下,“这是解决这个问题的更好办法”。
lst = []
for a in range(x,y):
    lst.append(a)
print lst
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)
2449998775
2499998775