2017-02-17 11 views
0

ファイルfに整数の長方形のリストが含まれているとします。最初の行にはファイル内の整数の行数と列数があります。例:ファイルから読み込んで2次元配列を作成する方法は?

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

ファイルを読み込んで2次元配列を作成する慣用方法はありますか?あなたが読書のためのファイルを開くと、あなたが最初の行を無視するように、ファイル自体にnext(..)を使用することができます

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

答えて

1

:になります

。その後、ジェネレータ式を使用して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

私はこの答えはより簡潔見つける:

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) 

あなたはまた、悪名高いあなたのコードを削減する理解を使用することができます。 – blackened

1

まあ、基本的にあなたは、あなたのファイルを開いて最初の行を破棄し、ファイルの残りの部分を使用して、テーブルを構築し、最終的にタプルは不変ですので、あなたのリストをタプルに変換し、変更することはできません必要がありますあなたはそれを作成した後のタプル:

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) 
関連する問題