将文本文件中的列拆分为python中的列表

时间:2019-03-06 19:19:35

标签: python

我有一个包含8列的文本文件,就像这样

100 40 37 98 47 55 75 67
50 84 93 67 85 90 42 57
68 95 74 75 87 95 32 86

对于我的函数,我需要查找指定列的平均值以及所有列的平均值。因此,要做到这一点,我需要能够使用列,而且我不确定如何将所有列转换为列表。

f=open(file,"r")
lines=f.readlines()
result=[]
for i in lines:
    result.append(i.split(' ')[1])
f.close()

我只能提取1列,但如果有人可以帮助我提取每一列,我将不胜感激。我的老师希望我们使用纯python,因此没有像panda或numpy这样的插件。谢谢

2 个答案:

答案 0 :(得分:1)

我建议提取行,然后转置结果列表列表:

with open(filename) as f:
   columns = list(zip(*(map(int, row.split()) for row in f)))

如果您愿意,我可以帮助解释其中的任何部分。

答案 1 :(得分:1)

f = open(filename,"r")

lines = []

for line in f:
    lines.append(map(int, line.strip().split()))

f.close()

现在我们有一个整数列表的列表:

print(lines)
# [[100, 40, 37, 98, 47, 55, 75, 67], [50, 84, 93, 67, 85, 90, 42, 57], [68, 95, 74, 75, 87, 95, 32, 86]]

将行列表转换为列列表称为“转置”,因此使用此答案Transpose list of lists,我们可以获得结果:

result = map(list, zip(*lines))

print(result)
# [[100, 50, 68], [40, 84, 95], [37, 93, 74], [98, 67, 75], [47, 85, 87], [55, 90, 95], [75, 42, 32], [67, 57, 86]]