イテレータ: (イテレータは Python3 の機能であることに注意してください)
反復は Python の最も強力な機能の 1 つであり、コレクションの要素にアクセスする方法です。
イテレータは、トラバースする場所を記憶するオブジェクトです。
Iterator オブジェクトは、コレクションの最初の要素からすべての要素にアクセスされるまでアクセスされます。イテレータは前方にのみ進むことができ、後方には進むことができません。
イテレータには、 iter()とnext() という2 つの基本メソッドがあります。
文字列、リスト、またはタプル オブジェクトはすべてイテレータの作成に使用できます。
例えば:
list=[1,2,3,4]
it = iter(list) # 创建迭代器对象
print (next(it)) # 输出迭代器的下一个元素
# 输出 1
例を挙げると、map 関数はイテレータを返しますが、正確には何が起こっているのでしょうか?
(メモリを節約するためのイテレータを返す zip 関数もあります。リストを取得するには、 list() メソッドを使用してリストに変換できます。)
>>> def square(x) : # 平方数を計算します
... return x ** 2
...
>>> map(square, [1,2,3,4,5]) # それぞれの平方数を計算しますリストの要素
<0x100d3d550 のマップ オブジェクト> # return iterator
図からわかるように、返されるのはイテレータのヘッダ要素のアドレスです。
現時点では、このイテレータを走査するだけですべての結果が返されます。
>>> list(map(square, [1,2,3,4,5])) # list() を使用してリスト
[1, 4, 9, 16, 25]に変換します
リストとイテレータの違い:
- リストが何回走査されても、ヘッダーの位置は常に最初の要素になります
- イテレータがトラバースすると、元のヘッダー位置ではなく、最後の要素の次の位置を指すようになります。