2016-09-02 50 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))