2017-02-17 48 views
0

假設文件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)) 

回答

1

一旦你打開文件進行讀取,你可以使用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)) 
+0

我覺得這個回答更加簡潔。 – blackened

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) 
相關問題