我有一个包含两列数据的文本文件,我希望将每个列作为列表读入Python。
例如:
2500.3410 -0.60960758
2505.5803 -1.3031826
2510.8197 -0.64067196
2516.0593 -1.0230898
2521.2991 -0.20078891
我想创建两个列表,一个包含第1列的数据,另一列包含第2列,但我不知道如何告诉Python这样做。
E.g。
list1 = [2500.3410, 2505.5803, 2510.8197, 2516.0593, 2521.2991]
我已经在shell中打开了文件,并且可以读取数据,如上所述,但是在创建列表时我感到困惑。
答案 0 :(得分:0)
您可以在float
:
zip
功能和map
zip(*[map(float,line.split()) for line in open('in_file')])
演示:
>>> s=""" 2500.3410 -0.60960758
... 2505.5803 -1.3031826
... 2510.8197 -0.64067196
... 2516.0593 -1.0230898
... 2521.2991 -0.20078891"""
>>>
>>> [i.split() for i in s.split('\n')]
[['2500.3410', '-0.60960758'], ['2505.5803', '-1.3031826'], ['2510.8197', '-0.64067196'], ['2516.0593', '-1.0230898'], ['2521.2991', '-0.20078891']]
>>> zip(*[map(float,i.split()) for i in s.split('\n')])
[(2500.341, 2505.5803, 2510.8197, 2516.0593, 2521.2991), (-0.60960758, -1.3031826, -0.64067196, -1.0230898, -0.20078891)]
但请注意,zip
返回元组列表,您可以使用map
函数将结果转换为列表:
>>> map(list,zip(*[map(float,i.split()) for i in s.split('\n')]))
[[2500.341, 2505.5803, 2510.8197, 2516.0593, 2521.2991], [-0.60960758, -1.3031826, -0.64067196, -1.0230898, -0.20078891]]
答案 1 :(得分:0)
首先,您必须阅读Python中的文本文件, 对于一个实例,如果你有一个名为record.txt的文件包含数据集,
file <- open('record.txt')
现在你必须逐行阅读文件:
lst = []
将整个文件存储为列表列表,每个内部列表代表一个实例
for line in file:
lst.append([ float(x) for x in line.split()])
现在您可以通过以下理解
将column1提取为列表,将列2提取为列表column1 = [ x[0] for x in lst]
column2 = [ x[1] for x in lst]