如何在python中汇总列表

时间:2016-09-02 00:16:50

标签: python-2.7

arr.rsplit(',', len(arr))

   print sum(arr)

如果我输入" 1,2,3,4"的字符串,第一行将其拆分为1,2,3,4的列表。但是,当我打印总和它不起作用时,我收到一条错误消息。

3 个答案:

答案 0 :(得分:1)

在您的情况下,您拆分字符串但结果未再次分配给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

它会将每个元素转换为整数,然后取总和。但是,如果您尝试在map方法之后打印arr:print(arr),则会提供输出:<map object at 0x7f90c081acc0>因此将arr转换为list以访问元素而不是{{1} }给arr = map(int,arr.split(','))

如果你想使用arr = list(map(int,arr.split(','))),那么解决方案(在python 3中):

rsplit

答案 1 :(得分:0)

您需要拆分然后将结果转换为整数才能求和。

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

答案 2 :(得分: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

希望这会有所帮助。查看有关变量类型的this reference