将字符串列表转换为浮点数列表(python)

时间:2013-11-28 13:19:20

标签: python list

我写了以下函数:

def read_coordinates(filename):
    invoerfile = open(filename)
    lines = invoerfile.readlines()
    for line in lines:
        seperate_coordinate_rows = line.split("=")
        for seperate_coordinate_row in seperate_coordinate_rows:
            row = seperate_coordinate_row.split()
            print row

给了我这些清单:

['5,4', '4,5', '8,7']
['6,3', '3,2', '9,6', '4,3']
['7,6']
['9,8']
['5,5', '7,8', '6,5', '6,4']

我需要添加什么才能获得带有浮点数作为输出的列表?

5 个答案:

答案 0 :(得分:4)

您可以使用:

row = map(lambda x: float(x.replace(',','.')), row)

以上将返回Python 3.x中的生成器,这可能适合您的需要,也可能不适合您。如果您需要实际列表,您有两种选择:

# Convert the generator to a list (bad option)
row = list(row)

# Or use a list comprehension
row = [float(x.replace(',','.')) for x in row]

答案 1 :(得分:0)

把它放在你的内部for循环中。

row = [float(x.replace(',', '.') for x in row]

答案 2 :(得分:0)

将您的值映射到float()

row = map(float, seperate_coordinate_row.replace(',', '.').split())

map()为第二个值中的每个值调用第一个参数,有效地返回浮点值列表。

此处需要.replace()才能将您的格式转换为float()识别的格式。

演示:

>>> line = '5,4 4,5 8,7'
>>> map(float, line.replace(',', '.').split())
[5.4, 4.5, 8.7]

如果您使用的是Python 3,或者只想使用列表推导,请使用:

[float(item.replace(',', '.') for item in seperate_coordinate_row.split()]

此处.replace()会应用于每个拆分项目。

答案 3 :(得分:0)

为确保获得列表,最好使用列表推导,因为map不会在Python3中返回列表

row = [float(x.replace(",", ".")) for x in seperate_coordinate_row.split()]

答案 4 :(得分:0)

替换最后两行
row = [float(item.replace(',', '.')) for item in seperate_coordinate_row.split()]
print row