arr.rsplit(',', len(arr))
print sum(arr)
如果我输入" 1,2,3,4"的字符串,第一行将其拆分为1,2,3,4的列表。但是,当我打印总和它不起作用时,我收到一条错误消息。
答案 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