1ヶ月でWebデザイン・プログラミングスキルをオーダーメイドのカリキュラムで学べるスクール、それがWebCamp。

子供の想像力を伸ばしアイデアを形にする小学生向けプログラミング教室「プロスタキッズ」

Python超入門その11〜イテレーションでループをわかりやすくしよう〜

Pocket

はじめに

ループ構文はマスターできましたか?

前回はfor文を紹介して、リストやディクショナリなどをループ処理しました。
これはイテレーション(繰り返し、反復)ともいい、イテレーション可能なオブジェクトであればなんでもイテレーションできます。

今回はイテレーションについて、さらに詳しくみていきます。

この記事では、Python初心者の方向けに、Pythonにおけるイテレーションについて解説していきます。

使用頻度が高い知識なので、深く理解しておきましょう。

for文のおさらい

それでは、はじめに前回説明したfor文のおさらいをしておきましょう。
ここでは、次のようにリストをイテレーションしてみます。

例:

for文にはイテレーション可能なオブジェクトを渡すことができ、自動的にイテレーションを回してくれます。

リストはシーケンスの一種であり、イテレーション可能です。

また、次のように文字列も同様にイテレーションできます。

例:

文字列の場合は一文字一文字が要素とみなされ、各ループでイテレーションされます。

さらに、for文は次のようにネスト(入れ子)することもできます。

例:

次に、前回紹介しなかったファイルのイテレーションについてみていきましょう。

ファイルもイテレーションできる

実は、ファイルもイテレーション可能なオブジェクトなのです。

ファイルの場合は、文字単位ではなく行単位でイテレーションされます。

たとえば、次のような形です。

例:

この例では、自分自身のソースコード(例ではMain.py)を行単位でイテレーションして、行番号とともに出力しています。

もちろん、先程の例のようにfor文をネストすれば、文字単位でイテレーションすることも可能です。

隠されたイテラブルオブジェクトを使う

for文によるイテレーションは言語によるサポートがあるため、一見魔法のように見えます。

しかし、内部ではちゃんとした仕組みが用意されているのです。
イテレーションを裏で支えているのは、「イテラブルオブジェクト」です。

次の例を見て下さい。

例:

この例は、冒頭で紹介した例と等価です。

ここでは明示的に__iter__メソッドを呼び出していますが、こうしなくてもfor文が暗黙的に__iter__メソッドを呼び出してくれます。

そして、__iter__メソッドから返されるのが「イテラブルオブジェクト」です。

次の例を見て下さい。

例:

この例では、リストからイテラブルオブジェクトを明示的に取得して、__next__メソッドを呼び出して、各要素を取得しています。

これが、for文が舞台裏で実行している処理です。

なお、要素数以上に__next__メソッドを呼び出すと、エラー(例外)が発生します。
また、次のようにiter関数を使ってイテラブルオブジェクトを取得することもできます。

例:

実際には手作業でイテレーションを回す必要はほとんどありませんが、裏でどのような処理が行われているかは覚えておきましょう。

リスト内包表記

最後に、リスト内包表記についてお伝えしておきます。

なにやら難しい用語ですが、例を見ればすぐに理解できるでしょう。

たとえば、リスト内の各要素に10を加算する場合を考えてみましょう。
ループで処理しようとすると次のようになります。

例:

例ではインデックスを使ってループを回し、各要素に10を加算しています。

シンプルなコードですが、ちょっと不格好に見えますね。

リスト内包表記を使えば、次のようにもっと簡単にできます。

例:

このように、リスト内でイテレーションを回して、各要素を処理できます。

結果がそのままリストになるため、見た目もシンプルです。

こちらもしっかり活用しましょう。

まとめ

イテレーションについて深い理解が得られましたか?

イテレーションは魔法のようなものではなく、内部では反復させるための仕組みが動いています。
ただなんとなく使うだけでなく、しっかりと内部動作もおさえておきましょう。
詳細を知ることで、中級者へとステップアップするための足がかりとなります。

投稿者:プロスタ編集部

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

初心者がプログラミングで挫折しない学習方法を無料動画で公開中。オンラインに特化したプログラミングスクール「TechAcademy(テックアカデミー)」が解説。

この記事が気に入ったら
いいね!しよう

プロスタの最新情報をお届けします

あわせて読みたい

関連記事

ページ上部へ戻る