01 / 06
同じ書きかたが、どれにも効いた
ここまで for をいろいろなものに使ってきた。リスト、文字列、辞書、range、ファイル。どれも同じ書きかたで回せたね。
これは偶然ではないよ。Pythonがそう作られているからだ。この章では、その仕組みのふたを開けてみる。
for kudamono in ["りんご", "みかん"]: print(kudamono)for moji in "あい": print(moji)実行結果
りんご みかん あ い
イテラブルとイテレータ
INPUT · スライド
01 / 06
ここまで for をいろいろなものに使ってきた。リスト、文字列、辞書、range、ファイル。どれも同じ書きかたで回せたね。
これは偶然ではないよ。Pythonがそう作られているからだ。この章では、その仕組みのふたを開けてみる。
for kudamono in ["りんご", "みかん"]: print(kudamono)for moji in "あい": print(moji)実行結果
りんご みかん あ い
02 / 06
for で回せるもののことを、イテラブル(回せるもの)と呼ぶよ。英語の iterable で、「くり返せる」という意味だ。
ここまでに出てきたものは、ぜんぶイテラブルだった。
range が作るもの「for に渡せるものがイテラブル」。それだけの言葉だよ。
tens = {"ゆい": 90, "そう": 60}for namae in tens: print(namae)for kazu in range(2): print(kazu)実行結果
ゆい そう 0 1
03 / 06
イテラブルは、自分で値を配っているわけではない。頼まれると「1つずつ取り出す係」を新しく作って渡すんだ。
この係のことを イテレータ(取り出す係)と呼ぶよ。iter という関数に渡すと、その係を見ることができる。
print(iter(["りんご", "みかん"]))<list_iterator object at 0x1234abcd>表示は呪文みたいだけれど、意味は「リスト用の取り出し係」。うしろの数は置き場所の番地で、実行するたびに変わるよ。
04 / 06
for の中身は、たった3つの手順でできている。
これだけ。だから、この3つに答えられるものなら何でも for で回せる。リストでも、ファイルでも、まだ見たことのない誰かが作った入れ物でも同じだよ。
05 / 06
逆に、この約束を持っていないものを for に渡すとエラーになる。数がそうだよ。
not iterable は「回せるものではない」という意味。Pythonのエラーは、この章で覚えた言葉でそのまま書かれているんだ。
for kazu in 5: print(kazu)実行結果
TypeError: 'int' object is not iterable
06 / 06
この章で新しくできるようになることは、正直に言うとほとんど無い。すでにできていたことの中身を開けて見ているだけだよ。
でも、ここを通っておくと後がずいぶん楽になる。Pythonの説明書には「for で回せます」という書きかたがあふれている。その一文の意味が、これからは正確に読めるはずだ。
次のレッスンでは、for を使わずに手で同じことをやってみるよ。