4

私は取り組み始めたばかりでpython、非常に基本的な質問です。

input.txt次のテストケースを含むがあります:

b---d
-d--d
--dd-
--d--
----d

5 X 5 Matrixここで、Python コードを使用して上記のコンテンツを保存したいと思います。戻りたいときmatrix[0][2]に返すように-

どうすればいいですか?私はそれを試しましたが、間違った答えを出力します。

4

2 に答える 2

5

文字列とファイルも反復可能であるため、これは非常に簡単です。

with open('input.txt') as matrixfile:
    matrix = [list(line.strip()) for line in matrixfile]

list()文字列を個々の文字のリストに変換します。.strip()改行を含む余分な空白を削除するために使用します。開いてmatrixfileいるファイル オブジェクトは反復可能であるため、ループしてすべての行を処理できます。

結果:

>>> matrix
[['b', '-', '-', '-', 'd'], ['-', 'd', '-', '-', 'd'], ['-', '-', 'd', 'd', '-'], ['-', '-', 'd', '-', '-'], ['-', '-', '-', '-', 'd']]
>>> matrix[0][2]
'-'
于 2013-01-12T18:28:18.950 に答える
2

したがって、Martijn は明白な回答を投稿するのが速かったので、別のアイデアを次に示します。

実際には、ネストされたリスト (「マトリックス」) を作成する必要はまったくありません。

with open("input.txt") as infile:
    matrix = [line.rstrip() for line in infile]

ネストされたリストと同じように、インデックスを作成できる (インデックスを作成すると 1 文字を返します) 5 つの文字列のリストが得られます。

>>> matrix
['b---d', '-d--d', '--dd-', '--d--', '----d']
>>> matrix[0][2]
'-'
于 2013-01-12T18:29:03.240 に答える