假设文件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))
答案 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)