0

重複の可能性:
既存のリストを使用して 2D 配列を作成するにはどうすればよいですか?

テキストファイル「mapview.txt」があり、その内容は次のとおりです。

1234
5678
9012

私は結果が欲しい:

[[1,2,3,4],[5,6,7,8],[9,0,1,2,]]

私は次のようにしたくない:

[['1','2','3','4'],['5','6','7','8'],['9','0','1','2']]

私はこのようなコードを持っています:

getit = open('./mapview.txt')
readit = getit.read()

itsline = readit.split()
line0 = list(itsline[0])
line1 = list(itsline[1])
line2 = list(itsline[2])

final = [line0,line1,line2]

print final

しかし、結果は

[['1','2','3','4'],['5','6','7','8'],['9','0','1','2']]

どうすれば入手することができますか

[[1,2,3,4],[5,6,7,8],[9,0,1,2,]]

? 配列で整数を使用するため、その形式が必要です。

助言がありますか?どんな助けでも素晴らしいでしょう。

前もって感謝します!

4

3 に答える 3

2

ソリューションを修正するには、変更します

line0 = list(itsline[0])
line1 = list(itsline[1])
line2 = list(itsline[2])

line0 = [int(i) for i in itsline[0]]
line1 = [int(i) for i in itsline[1]]
line2 = [int(i) for i in itsline[2]]

しかし、このリスト内包表記はより効率的です:

[[int(i) for i in line.strip()] for line in open('file/path')]
于 2012-10-07T14:33:13.207 に答える
2

次のようにして、リスト内のすべての文字列を int に変更できます。

map(int, lst)

(map関数はリストのすべての項目に関数を適用し、関数intは文字列をリストに変換します)。あなたの場合、リストのリスト内のすべての文字列を変更する必要があるため、次のようなものが必要になります

[map(int, lst) for lst in final]

コードについて注意すべきもう 1 つの点は、

line0 = list(itsline[0])
line1 = list(itsline[1])
line2 = list(itsline[2])

ファイルにちょうど 3 行ある場合にのみ機能します。これは、次の方法でも改善できます。

final = map(list, itsline)
于 2012-10-07T14:32:26.173 に答える
2
with open('./mapview.txt') as file:
     array2d = [[int(digit) for digit in line.strip()] for line in file]

print(array2d)

出力

[[1, 2, 3, 4], [5, 6, 7, 8], [9, 0, 1, 2]]
于 2012-10-07T14:43:49.030 に答える