0

我正在用python编写一个程序,从文件'var_input'中获取5行输入并将其输入到列表中,然后将每个单独的数字首先或第二输入到列表中

我只是想知道最好的方法是将每个数字之间的空间分开,然后将其附加到列表中。我正在考虑使用 python 的 split 方法,但我不确定如何做到这一点

输入文件中的数据如下所示

18 24               
10 5
101 567
234 90
107 4567

首先应该包含['18', '10', '101', '234', '107']

第二个应该包含['24', '5', '567', '90', '4567']

这是我到目前为止所拥有的

first = []
second = []

file_input = open('var_input')
input_list = file_input.readlines()

非常感谢,任何帮助将不胜感激

4

2 回答 2

2

你可以用zipand做到这一点split

with open('var_input') as file_input:
    input_list = file_input.readlines()
first, second = zip(*[l[:-1].split() for l in input_list])

它是如何工作的 -[l[:-1].split() for l in input_list]是一个列表推导,它将split方法应用于每一行,使其看起来像:

[["18", "24"], ["10", "5"], ["101", "567"], ["234", "90"], ["107", "4567"]]

zip是一个函数,然后将多个列表压缩在一起(当与 一起给出时*,它将输入列表中的每个项目视为一个单独的参数)。它通过获取每个列表的第一项,然后是每个列表的第二项来“压缩”它(如果每行有三个或更多项目,你最终会得到三个或更多输出列表)。结果看起来像

[('18', '10', '101', '234', '107'), ('24', '5', '567', '90', '4567')]
于 2013-03-21T21:28:51.757 回答
0
first = []
second = []

with open('var_input') as fp:
    for line in fp:
        temp = line.split()
        first.append(temp[0])
        second.append(temp[1])

这可能看起来很愚蠢,但它很简单并且有效。

于 2013-03-22T07:30:55.897 回答