Python イテレータとは何か、そしてその使用方法

PHPz
リリース: 2023-05-12 13:19:06
転載
1096 人が閲覧しました

Python イテレータ

イテレータは、可算数の値を含むオブジェクトです。

イテレータは反復可能なオブジェクトです。つまり、すべての値を反復処理できます。

技術的には、Python におけるイテレータは、メソッド iter() および next() を含むイテレータ プロトコルを実装するオブジェクトです。

Iterator VS Iterable オブジェクト (Iterable)

リスト、タプル、ディクショナリ、セットはすべて反復可能なオブジェクトです。これらはイテレータを取得できる反復可能なコンテナです。

これらすべてのオブジェクトには、イテレータを取得するための iter() メソッドがあります:

Instances

タプルからイテレータを返し、それぞれの値を出力します:

mytuple = ("apple", "banana", "cherry")
myit = iter(mytuple)

print(next(myit))
print(next(myit))
print(next(myit))
ログイン後にコピー

実行中のインスタンス

apple
banana
cherry
ログイン後にコピー

文字列も反復可能なオブジェクトであり、反復子を返すことができます:

インスタンス

文字列も反復可能なオブジェクトです。一連の文字を含む:

mystr = "banana"
myit = iter(mystr)

print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
print(next(myit))
ログイン後にコピー

実行中のインスタンス

b
a
n
a
n
a
ログイン後にコピー

反復イテレータの走査

for ループを使用して反復可能オブジェクトを走査することもできます:

Instance

タプルの値を反復処理します:

mytuple = ("apple", "banana", "cherry")

for x in mytuple:
  print(x)
ログイン後にコピー

インスタンスを実行します

python_iterator_loop_1.py
apple
banana
cherry
ログイン後にコピー

インスタンス

文字列内の文字を繰り返します:

mystr = "banana"

for x in mystr:
  print(x)
ログイン後にコピー

例を実行します

python_iterator_loop_2.py
b
a
n
a
n
a
ログイン後にコピー

ヒント: for ループは実際にイテレータ オブジェクトを作成し、ループごとに next() メソッドを実行します。

イテレータの作成

オブジェクト/クラスをイテレータとして作成するには、iter() メソッドと next() メソッドを実装する必要があります。オブジェクト。

Python クラス/オブジェクトの章で学習したように、すべてのクラスには init() という関数があり、オブジェクトの作成時に初期化を行うことができます。

iter() メソッドも同様に動作し、操作 (初期化など) を実行できますが、常にイテレータ オブジェクト自体を返す必要があります。

next() メソッドを使用しても操作を実行でき、シーケンス内の次の項目を返す必要があります。

1 から始まり、各シーケンスが 1 ずつ増加する数値を返すイテレータを作成します (1、2、3、4、5 などを返します)。 .) :

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    x = self.a
    self.a += 1
    return x

myclass = MyNumbers()
myiter = iter(myclass)

print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
ログイン後にコピー

実行例

python_iterator_create_1.py
1
2
3
4
5
ログイン後にコピー

StopIteration

十分な next() ステートメントがある場合、またはそれらを for ループ内で使用している場合、上記の例は永遠に続きます。 。

反復に永遠に時間がかかることを防ぐために、StopIteration ステートメントを使用できます。

next() メソッドでは、反復が指定された回数完了した場合にエラーを発生させる終了条件を追加できます。

Example

20 回の反復後に停止:

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self

  def __next__(self):
    if self.a <= 20:
      x = self.a
      self.a += 1
      return x
    else:
      raise StopIteration

myclass = MyNumbers()
myiter = iter(myclass)

for x in myiter:
  print(x)
ログイン後にコピー

実行中のインスタンス

python_iterator_create_2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ログイン後にコピー

以上がPython イテレータとは何か、そしてその使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!