如何在python中获得所需的垂直列表?

时间:2014-01-23 06:57:36

标签: python

如何垂直读取文件?因此,例如文件将包含以下内容:

1234
4567
7890

获取[147, 258, 369 479]

这是用的

rows = [line.split() for line in f]

columns=zip(*rows)
print(columns)

并获得以下内容

zip object

我应该怎么做才能解决这个问题?这样我得到了理想的结果

4 个答案:

答案 0 :(得分:0)

看起来你正在使用Python 3,其中zip返回一个迭代器。要查看值,您需要使用迭代器,例如使用list构造函数:

columns = list(zip(*rows))

要获取单个变量中的各个列,您可以将其解压缩:

col1, col2, ... = zip(*rows)

如果文件确实只有一列,则没有理由首先调用split。只需将这些行读入列表:

col = [int(line) for line in f]     # or float(line)...

答案 1 :(得分:0)

在Python 3中zip返回一个zip对象,对于迭代而非用于打印非常有用。修复很简单:

print(list(columns))

答案 2 :(得分:0)

这是你的代码

lines = "1234 4567 7890"
rows_iter = [iter(s) for s in lines.split()]
cols_as_list = zip(*strs_iter)
cols = [''.join(c) for c in cols_as_list]

答案 3 :(得分:0)

在名为'foop.txt'的文件中给出您的样本数据,请转到:

z = zip(*(l for l in open('foop.txt')))
columns = [''.join(x) for x in z]
print columns

结果:

['147', '258', '369', '470']

如果您想将“列”作为生成器,则只需更改该行:

columns = (''.join(x) for x in z)