2016-09-02 49 views
-1
arr.rsplit(',', len(arr)) 

    print sum(arr) 

如果我输入的“1,2,3,4”的字符串,第一行拆分它的1,2,3,4列表清单。但是,当我打印总和它不起作用时,我收到一条错误消息。如何总结在python

+0

为什么你特别在'split'上使用'rsplit',并在不需要限制分割数量时传递第二个参数?此外,即使字符串包含整数的文本表示形式,您也有一个字符串列表,而不是整数。 – user2357112

回答

0

您需要先将结果转换为整数,然后再进行求和。

arr_list = arr.split(',') 
result = sum(int(i) for i in arr_list) 
+0

究竟是,还是浮动,如果你想要的数字是一个整数或浮点数。 – AER

+0

@AER这只是一个例子,但谢谢 – Zety

0

总结你的数组的最佳方式是(你需要转换你的数组元素是一个浮点数,而不是字符串):

i=0 
for a in arr.split(','): i=i+float(a) #use int() if you want integers 

print i 

有了您的效率较低语法这只会是:

i=0 
for a in arr.rsplit(',', len(arr)): i=i+float(a) #use int() if you want integers 


print i 

希望这有助于。对不同类型的变量

1

退房this reference在你的情况你的分割字符串,但结果不会被再次分配给arr让你的变量arr值没有得到改变它仍然是字符串,所以当你申请sum(arr)它是给人一种错误。但是,如果你给它分配arr中分割元素的类型<class 'str'>所以它转换成integer

我想在Python 3使用split代替rsplit解决方案:

arr = "1,2,3,4" 
arr = map(int,arr.split(',')) 
print(sum(arr)) 

输出:10

它会将每个元素转换为整数,然后取总和。但是,如果你尝试打印ARR:地图方法之后print(arr)它给输出:<map object at 0x7f90c081acc0>所以转换arrlist访问要素所以不是arr = map(int,arr.split(','))arr = list(map(int,arr.split(',')))

如果你想使用rsplit然后解决方案(在Python 3) :

arr = "1,2,3,4" 
arr = list(map(int,arr.rsplit(',', len(arr)))) 
print(sum(arr))