-1

整数の行列を含むファイルがあります。ファイルの内容を読み込んで、リストのリストに保存する必要があります。私はこれをどのように行わなければならないのかよくわかりません。

A.txtファイルに含まれる内容の例を次に示します。

3,7
1,2,3,4,5,6,7
11,12,13,14,15,16,17
21,22,23,24,25,26,27

これまでの私のコードは次のとおりです。

def main():

    A = open('A.txt')

    Alist = []

    for eachLine in A:





main()

では、どうすればこれを実行できますか?readLine()メソッドとsplit()メソッドを何らかの方法で使用する必要があることはわかっていますが、その方法がわかりません。また、文字列ではなく整数のリストである必要があります。誰か助けてもらえますか?

4

2 に答える 2

3

各行を整数のリストに解析し、splitそれをコンマで分割intしてから、それらを文字列から(のよう['3', '7'][3, 7])変換し、それらを累積する必要があります。

with open('A.txt') as f:
    Alist = []
    for line in f:
        part = []
        for x in line.split(','):
            part.append(int(x))
        Alist.append(part)

(これは、withステートメントを使用してファイルを開きます。これは、ファイルの処理が完了すると、その間にエラーが発生した場合でもファイルを自動的に閉じるため、推奨される方法です。)

しかし、空のリストを初期化してから各要素に何かを追加する2つのループがあることに注意してください。これは非常に一般的なパターンであるため、Pythonにはリスト内包表記があります。最初に内側の部分だけを実行しましょう。

with open('A.txt') as f:
    Alist = []
    for line in f:
        part = [int(x) for x in line.split(',')]
        Alist.append(part)

それがまったく同じことであることがわかりますか?これで、さらに短くすることができます。

with open('A.txt') as f:
    Alist = [[int(x) for x in line.split(',')] for line in f]
于 2012-11-04T21:24:33.043 に答える
0

使用map()

In [1]: with open("data1.txt") as f:
   ...:     lis=[map(int,x.split(",")) for x in f]
   ...:     print lis  
   ...:     
[[3, 7], [1, 2, 3, 4, 5, 6, 7], [11, 12, 13, 14, 15, 16, 17], [21, 22, 23, 24, 25, 26, 27]]

または使用ast.literal_eval()

In [5]: import ast

In [6]: with open("data1.txt") as f:
    lis=[list(ast.literal_eval(x)) for x in f]
    print lis
   ...:     
[[3, 7], [1, 2, 3, 4, 5, 6, 7], [11, 12, 13, 14, 15, 16, 17], [21, 22, 23, 24, 25, 26, 27]]
于 2012-11-04T21:27:26.923 に答える