我从外部文件中打印了一些数据并将数据拆分为一个字符串:
string = data
splitstring = string.split(',')
print(splitstring)
这给了我:
['500', '500', '0.5', '50', '1.0', '0.75', '0.50', '0.25', '0.00']
我尝试使用这种方法将它们变成 float :
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
请您参考如下方法:
使用列表理解:
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() 选项更好。
