こんにちは。3度の飯よりプログラミングが好きなエンジニアです。
今回は、 Python でオセロゲームを作ってみる 第1弾 の解説記事となります。
プログラミング学習の参考になれば幸いです。
この記事で分かるようになること
- リスト
- 2次元リスト
- リスト内法表記
Python でオセロゲームを作ってみる 第1弾 の以下の部分を解説します。たかが1行だけですが、奥が深い1行です。
board = [[EMPTY for _ in range(W)] for _ in range(H)]
リストとは
変数をいっぱい並べておく入れ物みたいなものです。
リストを作成する
a = [5, 1, 2, 5, 9]
print(a)
結果
[5, 1, 2, 5, 9]
リストに値を追加する
a = [5, 1, 2, 5, 9]
print(a)
a.append(6)
print(a)
結果
[5, 1, 2, 5, 9]
[5, 1, 2, 5, 9, 6]
2次元リストとは
リストの中にリストがあるイメージです。
a = [[1, 2], [5, 3, 1], [1, 3]]
print(a)
出力
[[1, 2],
[5, 3, 1],
[1, 3]]
オセロ盤面は以下の2次元リストで表しています。
[['.', '.', '.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.', '.', '.'],
['.', '.', '.', '.', '.', '.', '.', '.', '.']]
リスト内法表記とは
リストの作成をカッコつけて書いているだけです。
普通なら3行で書くことを1行で書けるので、熟練者にとってはこっちの方が読みやすいです。
a = [i for i in range(4)]
出力
[0, 1, 2, 3]
[] の中に for がいて、とっつきにくい感じがあります。
上のコードは以下と同義です。
a = []
for i in range(4):
a.append(i)
まあ確かに短くなってはいるが...
最初の内は必須項目ではないと思います。
そして、さらにカッコつけて2次元リストをリスト内法表記すると以下のようになります。
a = [[i + j for i in range(3)] for j in range(4)]
これは以下と同じことをしています。
a = []
for j in range(4):
b = []
for i in range(3):
b.append(i + j)
a.append(b)
うーん、2重 for ループですでにややこしいのにさらにややこしくなっています。
ですが、何回も書いているとリスト内法表記のほうが見やすくなってきます。
オセロゲームに戻る
ということで、今回は以下のコードの解説をしました。
リストについて少しでも解像度が高められていれば幸いです。
board = [[EMPTY for _ in range(W)] for _ in range(H)]
ここまで読んでくれた方へ
今回はリストに関する解説記事を書いてみました。
本気でプログラミングを書けるようになりたい方向けに、プログラミングスクール を開講しています。
無料カウンセリングも実施しております。プログラミングに関する相談やお悩みをぜひ聞かせてください!