私は取り組み始めたばかりでpython
、非常に基本的な質問です。
input.txt
次のテストケースを含むがあります:
b---d
-d--d
--dd-
--d--
----d
5 X 5
Matrix
ここで、Python コードを使用して上記のコンテンツを保存したいと思います。戻りたいときmatrix[0][2]
に返すように-
。
どうすればいいですか?私はそれを試しましたが、間違った答えを出力します。
私は取り組み始めたばかりでpython
、非常に基本的な質問です。
input.txt
次のテストケースを含むがあります:
b---d
-d--d
--dd-
--d--
----d
5 X 5
Matrix
ここで、Python コードを使用して上記のコンテンツを保存したいと思います。戻りたいときmatrix[0][2]
に返すように-
。
どうすればいいですか?私はそれを試しましたが、間違った答えを出力します。
文字列とファイルも反復可能であるため、これは非常に簡単です。
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]
'-'
したがって、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]
'-'