python3中数组中所有元素的总和

python3中数组中所有元素的总和,python,arrays,python-3.x,Python,Arrays,Python 3.x,我有一个整数数组,它们是空间分隔的,就像这个小例子: ar = 1000000001 1000000002 1000000003 1000000004 1000000005 我想一个字符一个字符地把这些数字加起来。例如,小示例的输出为: 5000000015 事实上,所有数字的第一个元素之和是5,这是所有元素的情况 为了得到这样的结果,我编写了以下代码: def sum(ar): for i in ar.split(): sum = 0 for j i

我有一个整数数组,它们是空间分隔的,就像这个小例子:

ar = 1000000001 1000000002 1000000003 1000000004 1000000005
我想一个字符一个字符地把这些数字加起来。例如,小示例的输出为:

5000000015
事实上,所有数字的第一个元素之和是5,这是所有元素的情况

为了得到这样的结果,我编写了以下代码:

def sum(ar):
    for i in ar.split():
        sum = 0
        for j in range(len(i)):
            sum += i[j]
    return sum

但它不返回我想要的输出。您知道如何修复它吗?

您的初始“数组”似乎是一个字符串,因此当您拆分数组时,您仍在处理无法添加到起始零值的字符串列表。另外,当预期的输出只是所有整数的和时,为什么要尝试“逐字符”求和还不清楚。您实际上只需要将每个整数字符串转换为整数,然后求和

s = '1000000001 1000000002 1000000003 1000000004 1000000005'

total = sum(int(x) for x in s.split())
print(total)
# 5000000015

试试这个。应该行得通

ar = "1000000001 1000000002 1000000003 1000000004 1000000005"
total=0
nums=ar.split(" ")
for num in nums:
    total+=int(num)
print(total)

首先使用捕获所有数字,然后通过首先解析将其传递给sum函数

import re

ar = "1000000001 1000000002 1000000003 1000000004 1000000005"
pattern = r'([0-9]+)' 

matches = re.findall(pattern, ar)
digit_sum = sum((int(match) for match in matches))
print (digit_sum)
输出:

5000000015

“sum”在for循环中,它被重置为“0”,并在每次迭代中丢失所有先前的状态信息。“我有一个整数数组,像这个小例子一样是空格分隔的”,这不是一个数组,甚至不是有效的Python语法。请提供一份