我有一个文件如下:
1 99
2 33
3 90
4 25
5 89
我想解析1,2,3,4,5
成 listx
和99, 33, 90, 25, 89
list y
,我该怎么做?
我不明白的部分是我只能读取但不知道如何解析为两个列表,我想也许有一种更优雅的方式来处理它,除了按空格分割并添加words[0]
到x
和word[1]
到y
我有一个文件如下:
1 99
2 33
3 90
4 25
5 89
我想解析1,2,3,4,5
成 listx
和99, 33, 90, 25, 89
list y
,我该怎么做?
我不明白的部分是我只能读取但不知道如何解析为两个列表,我想也许有一种更优雅的方式来处理它,除了按空格分割并添加words[0]
到x
和word[1]
到y
with open('number-file') as f:
x,y = zip(*(map(int, line.split()) for line in f))
会给你你想要的。
with open('number-file') as f:
打开一个文件进行读取(并在代码完成后关闭它)。然后,您可以简单地对其进行迭代。
(line.split() for line in f)
是一个生成器表达式,它为每行生成两个字符串。对于每一行,map(int, line.split())
将这些字符串转换为整数。到目前为止的结果看起来像
[[1, 99], [2, 33], [3, 90], [4, 25], [5, 89]]
有了,我们可以在结果列表和zip
中加入子列表的第 n 个元素。x
y
从技术上讲,x 和 y 现在是元组(不可变)而不是列表(可以扩展和更改)。在大多数情况下,元组应该也可以工作,但如果你真的需要列表,只需添加
x,y = list(x), list(y)
left_column = []
right_column = []
with open('your_file') as f:
reader = csv.reader(f, delimiter=' ')
for line in csv_reader:
left_column.append(line[0])
right_column.append(line[1])