イテレータとジェネレータ

7 views 21 Jan 2026
Python では「イテラブル」と「イテレータ」という似た言葉がありますが、これらは明確に異なる概念です。混同しやすいので、しっ...
11 views 22 Jan 2026
Python の `for` 文はシンプルに見えますが、内部ではイテレータプロトコルが動いています。その仕組みを理解すると、Py...
13 views 22 Jan 2026
`iter()` と `next()` は、イテレータを手動で操作するための組み込み関数です。`for` 文では自動的に呼び出さ...
16 views 23 Jan 2026
`StopIteration` は、イテレータが終端に達したことを示す例外です。普段は `for` 文が自動的に処理してくれるた...
7 views 23 Jan 2026
`yield` は、関数から値を返しつつ、その状態を保持する特別なキーワードです。`return` とは異なり、関数の実行を一時...
9 views 23 Jan 2026
ジェネレータ関数は、`yield` キーワードを使って値を順番に生成する関数です。普通の関数と見た目は似ていますが、動作が大きく...
9 views 24 Jan 2026
ジェネレータ式は、リスト内包表記に似た構文で簡潔にジェネレータを作成できる方法です。括弧の種類が異なるだけで、メモリ効率に大きな...
8 views 26 Jan 2026
`yield from` は、別のイテラブルやジェネレータの要素をすべて委譲して `yield` するための構文です。ネストした...
8 views 26 Jan 2026
Python でオブジェクトを `for` 文で使えるようにするには、「イテレータプロトコル」を実装します。具体的には `__i...
5 views 27 Jan 2026
クラスを使ってカスタムイテレータを作ると、複雑な状態管理やカスタムロジックを持つイテレータを実装できます。ここでは実践的な例をい...
6 views 27 Jan 2026
ジェネレータの最大の利点は、メモリ効率の良さです。リストがすべての要素を一度にメモリに展開するのに対し、ジェネレータは必要なとき...
7 views 27 Jan 2026
ジェネレータを使うと、終わりのない「無限シーケンス」を作ることができます。すべての要素をメモリに保持する必要がないため、理論上は...
8 views 27 Jan 2026
`itertools` は、イテレータを効率的に扱うための標準ライブラリです。メモリ効率の良いイテレータを簡単に作成でき、データ...
7 views 27 Jan 2026
ジェネレータは値を `yield` で返すだけでなく、`send()` メソッドを使って外部から値を受け取ることもできます。これ...
8 views 16 Feb 2026
ジェネレータは yield で値を返すだけの存在ではない。外部からジェネレータに例外を投げ込んだり、明示的に終了させたりする仕組...
6 views 16 Feb 2026
ジェネレータは単体でも便利だが、複数のジェネレータを数珠つなぎにしたとき真価を発揮する。Unix のパイプのように、データを段階...
7 views 19 Feb 2026
コンテキストマネージャを作るには通常 __enter__ と __exit__ を持つクラスを定義する。しかし contextl...