0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

行列みたいな標準入力を1行で変数に代入する方法【Python】

Posted at

概要

コーディングテストや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)]

解説

  1. まずinput()で受け取った1行目の文字列'1 2 3 4'に対して、split()で空白区切りのリストにします。これで['1', '2', '3', '4']となります。

  2. このままでは文字列なので、足し算をしても'1' + '2' = '12'みたいな事になってしまいます。そこで、配列input().split()(= ['1', '2', '3', '4'])に対して、要素を取り出すfor i in (配列)で一つずつ要素を取り出してはint(i)として文字列から整数値に変換します。これで[1, 2, 3, 4]になりました!

  3. あとはこれを行列の行数、つまり標準入力の回数繰り返します。繰り返すときの変数は何でもいいので、ここでは_としています。(1と2の処理) for _ in range(H)

  4. 忘れずに両端を[]で囲ったら完成です!お疲れさまでした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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?