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()