Python 将文本文件中的数据保存在数组中
在Python中,如果我有以下文件:Python 将文本文件中的数据保存在数组中,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,在Python中,如果我有以下文件: 1 10 2 50 3 8 4 9 5 16 6 18 我如何将这些数据保存在两个数组中 A = [1 2 3 4 5 6] B = [10 50 8 9 16 18] 谢谢我们可以用它来完成 此函数返回元组列表,其中i-th元组包含来自每个参数序列或iterables的i-th元素。返回的列表的长度被截断为最短参数序列的长度。当存在多个长度相同的参数时,zip()类似于map(),初始参数为None。对于单个序列参数,它返回一个1元
1 10
2 50
3 8
4 9
5 16
6 18
我如何将这些数据保存在两个数组中
A = [1 2 3 4 5 6]
B = [10 50 8 9 16 18]
谢谢我们可以用它来完成
此函数返回元组列表,其中i
-th元组包含来自每个参数序列或iterables的i
-th元素。返回的列表的长度被截断为最短参数序列的长度。当存在多个长度相同的参数时,zip()
类似于map()
,初始参数为None。对于单个序列参数,它返回一个1元组列表。如果没有参数,它将返回一个空列表
让我举例说明:
In [1]: filedata = """1 10
...: 2 50
...: 3 8
...: 4 9
...: 5 16
...: 6 18
...: """
In [2]: filedata
Out[2]: '1 10 \n2 50 \n3 8\n4 9\n5 16\n6 18\n'
In [3]: data = []
...: for line in fdata.splitlines():
...: lineParts = line.strip().split()
...: data.append(lineParts)
...:
In [4]: data
Out[4]: [['1', '10'], ['2', '50'], ['3', '8'], ['4', '9'], ['5', '16'], ['6', '18']]
In [5]: zip(*data)
Out[5]: [('1', '2', '3', '4', '5', '6'), ('10', '50', '8', '9', '16', '18')]
请注意,我们使用*data
而不是data
,将列表中的每个元素解压到一个单独的zip()
参数中
请注意,现在我们有了一个包含两个tuple()
s的列表,您希望a
和B
都是列表,下面是我们如何使用将tuple()
s更改为list()
s的方法:
编辑:为清晰起见,完整代码如下:
filename = 'input.txt'
data = []
with open(filename, 'r') as fd:
for line in fd:
lineParts = line.strip().split()
data.append(lineParts)
(A, B) = map(list, zip(*data))
我们可以这样做
此函数返回元组列表,其中i
-th元组包含来自每个参数序列或iterables的i
-th元素。返回的列表的长度被截断为最短参数序列的长度。当存在多个长度相同的参数时,zip()
类似于map()
,初始参数为None。对于单个序列参数,它返回一个1元组列表。如果没有参数,它将返回一个空列表
让我举例说明:
In [1]: filedata = """1 10
...: 2 50
...: 3 8
...: 4 9
...: 5 16
...: 6 18
...: """
In [2]: filedata
Out[2]: '1 10 \n2 50 \n3 8\n4 9\n5 16\n6 18\n'
In [3]: data = []
...: for line in fdata.splitlines():
...: lineParts = line.strip().split()
...: data.append(lineParts)
...:
In [4]: data
Out[4]: [['1', '10'], ['2', '50'], ['3', '8'], ['4', '9'], ['5', '16'], ['6', '18']]
In [5]: zip(*data)
Out[5]: [('1', '2', '3', '4', '5', '6'), ('10', '50', '8', '9', '16', '18')]
请注意,我们使用*data
而不是data
,将列表中的每个元素解压到一个单独的zip()
参数中
请注意,现在我们有了一个包含两个tuple()
s的列表,您希望a
和B
都是列表,下面是我们如何使用将tuple()
s更改为list()
s的方法:
编辑:为清晰起见,完整代码如下:
filename = 'input.txt'
data = []
with open(filename, 'r') as fd:
for line in fd:
lineParts = line.strip().split()
data.append(lineParts)
(A, B) = map(list, zip(*data))
此纯Python 3代码对于初学者来说是可以理解的:
#!/usr/bin/env python3
first = list()
second = list()
with open("/tmp/tmp.txt", "r") as data:
for a in data.readlines():
_1, _2 = a.split()
first.append(int(_1))
second.append(int(_2))
print("A =",first,"\nB =",second)
它给了你:
$ python3 /tmp/tmp.py
A = [1, 2, 3, 4, 5, 6]
B = [10, 50, 8, 9, 16, 18]
此纯Python 3代码对于初学者来说是可以理解的:
#!/usr/bin/env python3
first = list()
second = list()
with open("/tmp/tmp.txt", "r") as data:
for a in data.readlines():
_1, _2 = a.split()
first.append(int(_1))
second.append(int(_2))
print("A =",first,"\nB =",second)
它给了你:
$ python3 /tmp/tmp.py
A = [1, 2, 3, 4, 5, 6]
B = [10, 50, 8, 9, 16, 18]
但是为了这个:110 2 50 3 8 4 9 5 16 6 18我必须读这个文件:/我不明白。这就是我在上面展示的。你是说你需要知道如何打开文件吗?我的意思是我需要先阅读一个文本文件,然后才能将其保存到一个数组中,在数组中有数据,请参见底部的“编辑”
A
和B
是您的列表()
s(“数组”)。没问题,很乐意帮助!)但是为了这个:110 2 50 3 8 4 9 5 16 6 18我必须读这个文件:/我不明白。这就是我在上面展示的。你是说你需要知道如何打开文件吗?我的意思是我需要先阅读一个文本文件,然后才能将其保存到一个数组中,在数组中有数据,请参见底部的“编辑”A
和B
是您的列表()
s(“数组”)。没问题,很乐意帮助!)