CHAPTER 8 · 4 lessons · 52問
イテラブルとイテレータ
なぜリストにも文字列にもファイルにも同じ for が効くのか。Python の設計思想が見える章。
ここまでで、for をいろいろなものに対して使ってきた。リスト、文字列、辞書、ファイル。どれも同じ書き方で回せた。これは偶然ではなくて、Python がそう設計されているからだよ。
その仕組みに名前がついている。回せるもののことを イテラブル、実際に1つずつ取り出す係のことを イテレータ と呼ぶ。for は、裏で「このイテラブルからイテレータをもらって、次の値をくれと繰り返し頼み、もう無いと言われたら終わる」ということをやっている。それだけだ。
この章は、新しくできることが増える章ではない。すでにできていたことの中身を開けて見る章だよ。だから「実用性が低い」と感じるかもしれない。でもここを通っておくと、この先ずっと効いてくる。なぜなら Python のライブラリは、この約束ごとの上に建っているからだ。「for で回せる」と書いてあるドキュメントの意味が、正確に読めるようになる。
具体的には iter と next という2つの関数を使って、for が裏でやっていることを手で再現してみる。1回書いてみると、for がまったく魔法ではないことが腹落ちするはずだよ。
そのうえで、実務でよく使う2つを覚える。enumerate は「何番目か」と「中身」を同時に取り出す道具。for i, kudamono in enumerate(kudamonos): と書けば、番号を自分で数える必要がなくなる。zip は2つのリストを横に並べて同時に回す道具で、名前のリストと点数のリストを突き合わせるようなときに使う。
この2つは、初学者と経験者でコードの見た目がいちばん変わるところだよ。番号を自分で増やしているコードを見たら「enumerate を知らないんだな」と分かるくらいには、Python では当たり前の書き方になっている。
この章のレッスン
for のしくみ