我写了以下函数:
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']
我需要添加什么才能获得带有浮点数作为输出的列表?
答案 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