如何从文件中读取并构建二维数组?

时间:2017-02-17 21:31:43

标签: python arrays python-3.x

假设文件f包含一个矩形的整数列表,其中第一行包含文件中整数的行数和列数。例如:

3 5
2 5 4 8 9
8 5 8 5 7
1 2 3 5 4

读取文件和构建二维数组的惯用方法是什么?

这将导致:

my_table = ((2, 5, 4, 8, 9), (8, 5, 8, 5, 7), (1, 2, 3, 5, 4))

2 个答案:

答案 0 :(得分:2)

打开文件进行阅读后,您可以在文件本身上使用next(..)忽略第一行。之后,使用可以使用生成器表达式并将其传递给tuple(..)以创建元组。

>> with open(yourFile) as f:
...     next(f)
...     a = tuple(tuple(int(y) for y in x.split()) for x in f)
... 
# a = ((2, 5, 4, 8, 9), (8, 5, 8, 5, 7), (1, 2, 3, 5, 4))

答案 1 :(得分:1)

好吧,基本上你应该打开文件,丢弃第一行,然后使用文件的其余部分构造你的表,最后将你的列表转换为元组,因为元组是不可变的,你不能修改元组后创造了它:

with open('file.txt') as f:
    f.readline() # ignores the first line
    table = []
    for line in f:
        table.append(tuple(int(e) for e in line.split()))

table = tuple(table)

你也可以使用一种理解来减少你的代码:

with open('file.txt') as f:
        f.readline() # ignores the first line
        table = tuple(tuple(int(number) for number in line.split()) for line in f)