2

我的代码产生了这个结果

[['1.2', ' 4.3', ' 7', '0'], ['3', ' 5', ' 8.2', '9'], ['4', ' 3', ' 8', '5.6'], ['8', ' 4', ' 3', '7.4']]

但我想删除''

def main():
    my_list = [line.strip().split(',') for line in open("Alpha.txt")]
    print(my_list)


main()

我试图将列表转换为浮点数,但它不断返回错误。我需要一种将这种格式的当前列表转换为浮点数的方法。

[float(i) for i in lst]

这对我没有用,因为在尝试使用 float(my_list) 时似乎出错了

4

4 回答 4

3

您想要[[float(i) for i in j] for j in lst]而不是[float(i) for i in j],列表是嵌套的 - 您有一个浮动列表,而不仅仅是一个浮动列表,就像您的代码工作所需的那样。此外,最好使用with语句打开文件,并且您可能希望使用try...except来捕获异常,以防文件中的某些数字无法转换为浮点数 - 例如。如果一行是1, 2, 34, 56thiswillcrashyourprogramatthemoment, 7, 8, 9.

于 2013-10-23T15:34:27.627 回答
0

在你的情况下,i['1.2', ' 4.3', ' 7', '0']明显,你不能浮动列表!

好吧,您将不得不使用双重迭代:

[[float i for i in j] for j in my_list]

希望这可以帮助!!

于 2013-10-23T15:35:42.000 回答
0

您可以使用map将这些字符串转换为浮点数

my_list = map(lambda item: ( map ( lambda s: float(s), item ) ), my_list)

由于 python 精度,你会得到一些花哨的数字

>>> map(lambda item: (map(lambda s: float(s), item)), l)

[[1.2, 4.2999999999999998, 7.0, 0.0], [3.0, 5.0, 8.1999999999999993, 9.0], [4.0, 3.0, 8.0, 5.5999999999999996], [8.0, 4000, 3.0000].

于 2013-10-23T15:42:52.723 回答
0

如果您打算使用您的数据进行计算,您可以考虑使用numpy和导入numpy.genfromtxt

import numpy as np
my_array = np.genfromtxt('Alpha.txt',delimiter=',')

如果需要,可以将其转换为如下列表:

my_list = my_array.tolist()
于 2013-10-23T15:49:42.983 回答