ホームページ バックエンド開発 Python チュートリアル Python のイテレータの最初の紹介

Python のイテレータの最初の紹介

Jun 09, 2023 pm 09:46 PM
python イテレーター 最初の知り合い

Python は、使いやすさとコードの読みやすさに優れた高レベルのプログラミング言語です。 Python の組み込みデータ型は非常に強力で、その 1 つである Iterator も非常に重要なデータ型です。

イテレータは、コンテナ オブジェクトをトラバースできるオブジェクトであり、特定の実装を公開せずにコンテナ要素にアクセスするメソッドを提供できます。コンテナ オブジェクトは、リスト、タプル、辞書、セットなどです。イテレータは、コンテナ オブジェクトの現在位置およびトラバースに関連するその他の状態情報を保存する内部状態を維持します。コンテナ オブジェクトをトラバースする必要がある場合、イテレータを使用して要素を取得できます。

Python では、__iter__() メソッドと __next__() メソッドを実装している限り、任意のオブジェクトをイテレータにすることができます。 __iter__() メソッドはイテレータ オブジェクトを返し、現在のオブジェクトの添字を 0 に初期化します。__next__() メソッドは、コンテナ オブジェクト内の要素を返すために使用されます。要素を返せない場合は、StopIteration 例外がスローされます。以下は簡単な例です:

class MyIterator:
    def __init__(self, container):
        self.container = container
        self.index = 0
    
    def __iter__(self):
        return self
    
    def __next__(self):
        if self.index >= len(self.container):
            raise StopIteration
        result = self.container[self.index]
        self.index += 1
        return result

my_list = [1, 2, 3]
my_iterator = MyIterator(my_list)
for item in my_iterator:
    print(item)
ログイン後にコピー

上記のコードでは、MyIterator という名前の反復子クラスをカスタマイズしました。 __iter__() メソッドと __next__() メソッドはこのクラスに実装されています。 __iter__() メソッドは現在のオブジェクトの反復子オブジェクト self を返しますが、__next__() メソッドはコンテナ オブジェクト my_list 内の要素を返すために使用されます。すべての要素が走査されると、StopIteration 例外がスローされ、反復が終了します。

Python では、イテレータはコンテナ オブジェクト内の要素を走査できるだけでなく、メモリとコンピューティング リソースを節約し、プログラムのパフォーマンスを向上させることができるため、非常に一般的に使用されます。一般的に使用される組み込みイテレータ関数とステートメントを次に示します。

  1. iter() 関数: 反復可能なオブジェクトをイテレータの戻り値に変換します。
my_list = [1, 2, 3]
my_iterator = iter(my_list) # 将列表对象转化为迭代器对象
for item in my_iterator:
    print(item)
ログイン後にコピー
  1. next() 関数: イテレータの __next__() メソッドを呼び出して、コンテナ オブジェクト内の次の要素を取得します。
my_list = [1, 2, 3]
my_iterator = iter(my_list) # 将列表对象转化为迭代器对象
print(next(my_iterator)) # 输出1
print(next(my_iterator)) # 输出2
print(next(my_iterator)) # 输出3
ログイン後にコピー
  1. enumerate() 関数: 添字と要素の両方を返します。
my_list = ['apple', 'banana', 'orange']
for index, item in enumerate(my_list):
    print(index, item)
# 输出: 0 apple
#       1 banana
#       2 orange
ログイン後にコピー
  1. zip() 関数: 複数の反復子または反復可能オブジェクトをタプルに返します。
my_list1 = ['apple', 'banana', 'orange']
my_list2 = [1, 2, 3]
for item in zip(my_list1, my_list2):
    print(item)
# 输出: ('apple', 1)
#       ('banana', 2)
#       ('orange', 3)
ログイン後にコピー
  1. in ステートメント: 要素がコンテナ オブジェクト内にあるかどうかを判断するために使用されます。
my_list = [1, 2, 3]
if 2 in my_list:
    print("2 is in my_list")
else:
    print("2 is not in my_list")
# 输出: 2 is in my_list
ログイン後にコピー

実際のプログラミングでは、コンテナ オブジェクトを走査する必要がある場合は、反復子を使用して走査し、添字参照を直接使用して要素を取得することは避けてください。メモリとコンピューティング リソースの無駄が発生するため、プログラムのパフォーマンスが低下します。イテレータの特徴は、オンデマンドで要素を生成し、オンデマンドでメモリを解放することであるため、大規模なデータセットを処理する場合、イテレータを使用するとプログラムの効率が大幅に向上します。

一般に、イテレータは Python において非常に重要な概念です。効率的で簡潔で保守しやすいプログラムを作成するには、その実装と一般的な構文を理解し、イテレータの使用スキルを習得する必要があります。

以上がPython のイテレータの最初の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

テンプレートのメリットとデメリットは何ですか? テンプレートのメリットとデメリットは何ですか? May 08, 2024 pm 03:51 PM

テンプレートのメリットとデメリットは何ですか?

Deepseek Xiaomiをダウンロードする方法 Deepseek Xiaomiをダウンロードする方法 Feb 19, 2025 pm 05:27 PM

Deepseek Xiaomiをダウンロードする方法

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表 Jul 01, 2024 am 07:22 AM

Google AI、開発者向けに Gemini 1.5 Pro と Gemma 2 を発表

わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます May 06, 2024 pm 03:52 PM

わずか 250 ドルで、Hugging Face のテクニカル ディレクターが Llama 3 を段階的に微調整する方法を教えます

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する May 06, 2024 pm 04:43 PM

いくつかの .NET オープンソース AI および LLM 関連プロジェクト フレームワークを共有する

どうやって彼にdeepseekに尋ねますか どうやって彼にdeepseekに尋ねますか Feb 19, 2025 pm 04:42 PM

どうやって彼にdeepseekに尋ねますか

評価関数の保存方法 評価関数の保存方法 May 07, 2024 am 01:09 AM

評価関数の保存方法

DeepSeekを検索する方法 DeepSeekを検索する方法 Feb 19, 2025 pm 05:18 PM

DeepSeekを検索する方法

See all articles