概要
コーディングテストやpaizaのスキルチェックでおなじみの行列っぽい標準入力。
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
このような標準入力はPythonのリスト内包表記を使うことで、1行のコードで変数に代入できる。
一般的に使えるように、ここではH行W列の標準入力とする(上の場合は4行4列)。
board = [[int(i) for i in input().split()] for _ in range(H)]
解説
-
まず
input()
で受け取った1行目の文字列'1 2 3 4'
に対して、split()
で空白区切りのリストにします。これで['1', '2', '3', '4']
となります。 -
このままでは文字列なので、足し算をしても
'1' + '2' = '12'
みたいな事になってしまいます。そこで、配列input().split()
(= ['1', '2', '3', '4'])に対して、要素を取り出すfor i in (配列)
で一つずつ要素を取り出してはint(i)
として文字列から整数値に変換します。これで[1, 2, 3, 4]
になりました! -
あとはこれを行列の行数、つまり標準入力の回数繰り返します。繰り返すときの変数は何でもいいので、ここでは
_
としています。(1と2の処理) for _ in range(H)
-
忘れずに両端を
[]
で囲ったら完成です!お疲れさまでしたm(_ _)m
実行例
(標準入力)
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
(コード)
board = [[int(i) for i in input().split()] for _ in range(4)]
print(board)
print(board[0])
print(board[3][3])
(結果)
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
[1, 2, 3, 4]
16
17