我从外部文件打印了一些数据并将数据拆分为一个字符串:
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, insplitstring[c]=float(splitstring[c]) TypeError: list indices must be integers, not str
Martijn Piet.. 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()
无论如何,列表理解和选项都更好.