python3:豆知識

反復可能 - 反復可能オブジェクト

オブジェクトは、そのメンバーの各項目の隣に戻すことができます。含みます:

  • 順序付きタイプリスト、STR、タプル
  • 無秩序型のdict、セット
  • __iter__のいずれかの定義、オブジェクト__next__クラス。

反復可能オブジェクトをするために使用することができ  for 、サイクルや他の多くの場所は、(のシーケンスを必要としzip()map() ...)。

ときイテレータオブジェクトパラメータは、組み込み関数に渡されたとして、それはオブジェクトのためのイテレータを返します。これは、使い捨てのイテレータトラバーサル値セットに適用されます。 iter() 

例:

>>> = [1、2 、なし]
 >>> 
[ 1、2 、なし]
 >>> ITER()
 <0x106a28f10でlist_iteratorオブジェクト>

 

for文に自動的にイテレータが反復可能である作成されます。運転サイクルの間。

 

 

イテレータ - イテレータ

一連のオブジェクトは、データストリームを表すために使用されます。繰り返し呼び出しイテレータ  __next__() 法(またはそれが組み込み関数に渡す  next())リターン・ストリームの1つのエントリずつ。

ほとんどのコンテナオブジェクトは、forループを使用することができます。

これは、ループ内で使用するために、機構の背後にあるITER()イテレータオブジェクトがコンテナオブジェクトである生成します。出力する__next __()コンテナオブジェクト内の一つのデータのいずれかを使用して、このオブジェクト。

 

 

データ型--iteratorタイプ

コンテナオブジェクトのサポート反復を提供します。

容器。__iter __()

イテレータオブジェクトを返します。これは、2つのメソッドがあります。

  • イテレータ.__ ITER __():用と文で交配のためのリターンそのもの。
  • イテレータ.__次__():コンテナの項目から次の項目を返します。

Pythonは配列型のリスト、STR、タプル、辞書の辞書、および繰り返しの他の特別な形のために、いくつかのイテレータオブジェクトを定義します。

 

データ型--generatorタイプ

ジェネレータは、イテレータを達成するための簡単な方法を提供します。

方法:

用途は内部的に得られることを関数を定義し、この関数である発電機。

それが作成されるオブジェクトと、それは発電機のイテレータです。イテレータジェネレータ

DEF 逆(データ)
     のためのインデックス範囲(LEN(データ)-1、-1、-1 ):
         収量データ[インデックス]

 >>> ためチャー逆(' ゴルフ' 
...      プリント(CHAR)
... 
のF 
L 
O 
G

 

 

ジェネレータ式:

もっと簡単な方法を定義するジェネレータ

>>> G =(X * X のためのx における範囲(10 ))
 >>> G
 <ジェネレータオブジェクト<genexpr>で0x1022ef630> 
>>> 次の(G)
0
 >>> 次の(G)
 1

 

次の各呼び出しは、サイクルタイムです。

 

例としては、定義された繰り返しオブジェクトクラスを生成証明します:

linshi.pyの
クラスリバース:
     "" " 配列後方をループするためのイテレータ""" 
    DEF  __init__ (自己、データ):
        self.data = データ
        self.index = LEN(データ)

    DEF  __iter__ (自己):
         戻りセルフ

    DEF  __next__ (自己):
         場合 self.index == 0:
             昇給を呼び出すとStopIteration 
        self.index = self.index - 1
         戻りself.data [self.index]

 

 

その後:

>>> インポートlinshi.py
 >>> インポートlinshi
 >>> REV = linshi.Reverse(' スパム'  >>> REV
 <linshi.Reverse 0x107c01430におけるオブジェクト> 
>>> から collections.abc インポートのIterable
 >>> でisinstance (REV、反復処理可能)
トゥルー

 

これは、オブジェクトクラス定義のrevが反復オブジェクトであることを示しています。


 

 

 

 

 

おすすめ

転載: www.cnblogs.com/chentianwei/p/11928966.html