假設文件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))
假設文件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))
一旦你打開文件進行讀取,你可以使用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))
好了,基本上你應該打開你的文件,棄去第一線,然後使用該文件的其餘部分構建你的表,最後你的列表轉換成一個元組,因爲元組是不可變的,你不能修改元組已創建後:
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)
我覺得這個回答更加簡潔。 – blackened