2013-12-09 57 views
1

我從外部文件打印的一些數據,將數據分割成一個字符串:談到字符串列表到浮動

string = data 
splitstring = string.split(',') 
print(splitstring) 

這給了我:

['500', '500', '0.5', '50', '1.0', '0.75', '0.50', '0.25', '0.00'] 

我試圖把它們變成使用這種方法花車:

for c in splitstring: 
    splitstring[c]=float(splitstring[c]) 

但它給我這個錯誤:

Traceback (most recent call last): 
    File "/Users/katiemoore/Documents/MooreKatie_assign10_attempt2.py", line 44, in <module> 
    splitstring[c]=float(splitstring[c]) 
TypeError: list indices must be integers, not str 

回答

6

使用列表理解:

splitstring = [float(s) for s in splitstring] 

,或者在Python 2中,速度,使用map()

splitstring = map(float, splitstring) 

當你遍歷在Python的列表,你沒有得到索引,你會得到值本身,所以c不是一個整數,而是一個字符串值(在第一次迭代中爲'500')。

你不得不使用enumerate()爲您生成指數,與實際值加在一起:

for i, value in enumerate(splitstring): 
    splitstring[i] = float(value) 

或使用for c in range(len(splitstring)):農產品指數。但是無論如何,列表理解和map()選項都更好。