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元

在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元组列表。如果没有参数,它将返回一个空列表

让我举例说明:

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(“数组”)。没问题,很乐意帮助!)