我想迭代从文件读取的每一行,拆分它们,然后将每个拆分元素转换为浮点数以创建一个浮动列表。
到目前为止,我有以下代码:
f = open('coordinates.dat')
contents = map(str.strip, f.readlines())
f.close()
对于contents
中的每个元素(行),我想要line.split()
,然后对line.split()
中的每个元素,将它们转换为浮点数。是否可以使用隐式循环执行此操作?输出看起来像这样:
[[float1, float2, float3], [float4, float5, float6], ... , [floatX, floatY, floatZ]]
(文件的每一行有三个数字)
我尝试了以下内容:
a = [ line for line in contents for float(i) in line.split()]
给出了sytax错误:SyntaxError: can't assign to function call
答案 0 :(得分:4)
重新排列您的尝试会生成正确的代码:
a = [[float(i) for i in line.split()] for line in contents]
答案 1 :(得分:3)
您可以使用嵌套列表解析:
a = [[float(i) for i in line.split()] for line in contents]
答案 2 :(得分:1)
如果你想使用map:
with open("coordinates.dat") as f:
out = [list(map(float, sub)) for sub in map(str.split, f)]
或者:
with open("coordinates.dat") as f:
out = [list(map(float, sub.split())) for sub in f]
print(out)
或者考虑到你有数字数据numpy会很有用:
import numpy as np
arr = np.loadtxt("coordinates.dat")
您也不需要调用readlines或str.strip
来转换为浮动。