パソコン ブログ

【 Python 】イテレータとイテラブル・オブジェクト

更新日:

この記事は、for文を知りたいんだけど。という方や、イテラブル・オブジェクトってなんぞ?という方向けの記事となっております。

イテレータってなんぞ?

イテレータはプログラミングにおいて、次の要素を読み込んで繰り返すことを言います。

そして、イテラブル・オブジェクトは、次の要素を読み込んで繰り返すオブジェクトのことを言います。

正直なんだそれ?って感じですね(笑)

しかしながら、このイテラブル・オブジェクトはPythonでのfor文に必要な要素です。

初心者がつまづきそうなポイントを押さえつつ説明しますので、しっかり頭に入れましょう!

イテレータの実際の動き

Python
samplelist = ["わ","た","し","は","こ","な","ゆ","き","で","す"]

iterator_samplelist = iter(samplelist)

print(next(iterator_samplelist)) # 現段階のイテラブル・オブジェクトを表示後、次のイテラブル・オブジェクトへ
print(next(iterator_samplelist))
print(next(iterator_samplelist))
print(next(iterator_samplelist))
print(next(iterator_samplelist))
print(next(iterator_samplelist))
print(next(iterator_samplelist))
print(next(iterator_samplelist))
print(next(iterator_samplelist))
print(next(iterator_samplelist))
print(next(iterator_samplelist))
print(next(iterator_samplelist))

これをIDLEで実行すると、結果は以下のようになります。

Python
わ
た
し
は
こ
な
ゆ
き
で
す
Traceback (most recent call last):
  File "E:/☆Python/practice_for1.py", line 15, in <module>
    print(next(iterator_samplelist))
StopIteration

1行目


日本語訳:
samplelistの配列に、「わ」「た」「し」........「す」を順番に格納しなさい。という命令文です。

配列は、変数の中に箱を作ってその中に格納していくイメージです。


簡単な図になりますが、一次元配列はこのようにイメージしてもらえれば分かりやすいと思います。

2行目


この記事の最難関になりますが、iteration_samplelistはsamplelistのイテラブル・オブジェクトですよ。という指定です。

iter()関数でsamplelistを次の要素を読み込めるように、iterator_samplelistに入れ直したことを意味します。

次の行以降で、それが明らかになります。

3行目以降

print(next(iterator_samplelist))

日本語訳:
現段階のiterator_samplelistを出力し、次のiterator_samplelistに移りなさい。という命令です。next()関数が入っているので分かりやすいですね。

実行結果の最後では、11番目(samplelist[10])には何も入っていないため、「もう入ってないのに、print()しないで」というエラーが表示されます。

まとめ

イテレータは一度わかってしまえば、ごく単純なもので、特にiter()関数は次の要素を読み込めるというだけの関数です。

ここさえ、乗り切ってしまえば、繰り返し処理を理解するのは容易くなるはずですので、イテレートとイテレートされたオブジェクト(イテラブル・オブジェクト)はしっかり抑えておきましょう!

最後までお読みいただきありがとうございました。


  • この記事を書いた人

こなゆき

パーフェクト趣味人。 知的好奇心MAX。 ゲーム・パソコン全般・科学・DIY・オーパーツとか怪しげなものも大好物。

-パソコン, ブログ

Copyright© さぶかるぐらし , 2019 All Rights Reserved.