のPythonのイテレータ深い理解

1、イテレータ

(1)イテラブル。

<1> ITERあれば持っているように__ __()メソッド反復オブジェクトであります

(私たちは、メソッドを持っているもののオブジェクトを決定するために()メソッドをDIRすることができ、DIRは()のリストを返し、リストには、オブジェクトのすべてのメソッド名の文字列が含まれています)

lst.__iter__()
dict.__iter__()

<2>は、利点をイテレート可能オブジェクト:

あなたは視覚的に内部のデータを見ることができます。

<3>は、欠点をイテレート可能オブジェクト:

メモリを取ります

イテラブルない反復値(指標以外、キーが削除)

(2)イテレータ:ツール

<1>はITER __ __()、次__ __()メソッドは、2つのイテレータであります

(イーター()と__ ITEは(__登録商標))(推奨ITERと同じです)

lst = [1,2,3,4,5]
l = lst.__iter__()   # 将可迭代对象转换成迭代器

l.__iter__()  # 迭代器指定__iter__()还是原来的迭代器
print(l.__next__())   # 1
print(l.__next__())   # 2

<2>イテレータの位置滞在、の値に基づいて、

<3>イテレータの利点:

不活性のメカニズム:スペースを節約

<4>イテレータ短所:

値を直接見ることができない、イテレータのビューは、イテレータのメモリアドレスであります
一度は、何もあり、不足していません
逆行しない(後方)

<5> アプリケーション

時間(3)空間:多数の要素を格納するための容器は、値の時間は短いが、大型コンテナ空間

(4)宇宙の時間:イテレータは、スペースを節約するためであるが、より長い時間値

(5)自然の循環:(フォーカス用)

l1 = [1, 2, 3, 4, 5, 6]
obj = iter(l1)    # 1 将可迭代对象转化成迭代器
while True:       # 2,利用while循环,next进行取值
    try:
        print(next(obj))
    except StopIteration:     # 3,利用异常处理终止循环
        break

(6)のpython3でPython2との違い:

pyhton3:
    iter()和 __iter__() 都有
    next()和__next__()都有

python2:
    iter()
    next()

おすすめ

転載: www.linuxidc.com/Linux/2019-09/160553.htm