Python の Iterable と Iterator の説明
Jan 01, 2025 am 07:42 AMこのページの目的は、2 つの反復プロトコルのダイナミクスを示すことです:
- 反復可能
- イテレーター
1. ただし、最初に (紛らわしい類似の単語に追加するため)、反復について説明しましょう
- 反復は、もちろん、ソースから項目を 1 つずつ取得し、それぞれに対して順番に何かを行うことです
- Python では、これは一般的に次のように使用されます。
- a) for/while ループと
- b) 内包表記
- デフォルトでは、これらの構造は構造全体を反復します
- ただし、ジェネレーター のように、よりきめの細かい制御が必要になる場合もあります。
- このために、2 つの重要な概念/プロトコルがあり、その上に Python の大部分が構築されています。
- a) 反復可能なオブジェクト
- b) イテレータオブジェクト
- 両方とも標準の Python プロトコルに反映されます
- これは特別なことではありません。実際、for/while ループと内包表記は反復プロトコルのこれらの下位レベルの要素に直接構築されます
2. ITER() メソッドは反復可能オブジェクトから反復子を作成します
- 反復可能なオブジェクト (オブジェクトのコレクションまたはストリーム) は、組み込みの iter() 関数 に渡すことができる任意のオブジェクトです。
- 組み込み iter() 関数が渡されると、渡された型の イテレータ オブジェクト が返されます。つまり、文字列イテレータは次のように作成されます。
>>> example_iterator = iter('abc') >>> example_iterator <str_iterator object at 0x063DCE38>
ログイン後にコピー
ログイン後にコピー
- イテレータは、基礎となるシーケンシャル データセット への シーケンシャル (ランダムではありません!) アクセスを提供する暗黙的なシーケンス オブジェクトであることに注意してください。
- たとえば、range オブジェクト自体はイテレータではありません
- 反復子は、基礎となるシリーズの任意の要素へのアクセスを許可しません
- シリーズの 次の 要素へのアクセスのみを提供します
- それらは順次アクセスを提供します
<!-- THIS IS NOT AN ITERATOR --> >>> r = range(10)[5] >>> r 5
ログイン後にコピー
ログイン後にコピー
3. NEXT() 関数はイテレータから次の値を返します
- 組み込み next() には iterator オブジェクトが必要です。コレクションの反復で次の値を返します
- イテレータは 2 つのコンポーネントで構成されます:
- コレクションの次の要素を取得するメカニズム
- シリーズの終了を知らせるメカニズム
オブジェクト システムが組み込まれたプログラミング言語では、この抽象化は通常、クラスによって実装できる特定のインターフェイスに対応します
- next() を使用すると、最初から最後までシリーズ全体ではなく、リクエストに応じて各項目を順番に検討できます
- 反復子インターフェイスには 2 つのメッセージが含まれています
- next → 次の要素のクエリ
- iter → イテレータを返します
- 制約: イテレータは 1 回反復可能
4. クラスルームの例 - 反復可能から反復子、停止例外まで
- Python は、StopIteration タイプの 例外 を自由に発生させます。
>>> example_iterator = iter('abc') >>> example_iterator <str_iterator object at 0x063DCE38>
ログイン後にコピー
ログイン後にコピー
5. 実際の例 - 複数のコマンドライン入力の単体テスト
- リスト ["20.01", "y"] などの反復可能なオブジェクトを定義/取得します
- 反復可能なオブジェクトを iter() に渡す → 反復子オブジェクトを作成する
- コード内で入力関数が呼び出されるたびに、反復子オブジェクトを next() に渡してリストの次の値を生成します。
<!-- THIS IS NOT AN ITERATOR --> >>> r = range(10)[5] >>> r 5
ログイン後にコピー
ログイン後にコピー
- 初めて input() に遭遇すると、「20.01」値が渡されます。
- 2回目は「y」です
- 3 回目は例外となります
6. リンク
- https://mypy.readthedocs.io/en/stable/protocols.html#iteration-protocols
- 5.2 暗黙的なシーケンス - Python の SICP
以上がPython の Iterable と Iterator の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

人気の記事
2つのポイント博物館:バングルワシュタランドロケーションガイド
4週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

人気の記事
2つのポイント博物館:バングルワシュタランドロケーションガイド
4週間前
By 尊渡假赌尊渡假赌尊渡假赌
スプリットフィクションを打ち負かすのにどれくらい時間がかかりますか?
3週間前
By DDD
レポ:チームメイトを復活させる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌
ハローキティアイランドアドベンチャー:巨大な種を手に入れる方法
3週間前
By 尊渡假赌尊渡假赌尊渡假赌

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック
Gmailメールのログイン入り口はどこですか?
7109
9


Java チュートリアル
1534
14


Laravel チュートリアル
1254
25


PHP チュートリアル
1205
29


CakePHP チュートリアル
1152
46

