Latest web development tutorials

python3イテレータとジェネレータ

イテレータ

反復は、Pythonの最も強力な機能の一つはコレクション要素にアクセスする方法です。 。

イテレータは、オブジェクトのトラバースは場所を覚えています。

すべての要素が完全に終了してアクセスされるまで、イテレータオブジェクトは、コレクションの最初の要素の先頭からアクセス可能です。 イテレータは、前方、後方ではない移動することができます。

ITER()、 ():イテレータは、2つの基本的な方法があります

文字列、リスト、またはタプルのオブジェクトは、イテレータを作成するために使用することができます。

>>> list=[1,2,3,4]
>>> it = iter(list)    # 创建迭代器对象
>>> print (next(it))   # 输出迭代器的下一个元素
1
>>> print (next(it))
2
>>> 

Iteratorオブジェクトは、従来のトラバースステートメントのために使用することができます。

#!/usr/bin/python3

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
for x in it:
    print (x, end=" ")

上記のプログラムは以下のように、出力結果は次のとおりです。

1 2 3 4

あなたはまた、次の()関数を使用することができます。

#!/usr/bin/python3

import sys         # 引入 sys 模块

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象

while True:
    try:
        print (next(it))
    except StopIteration:
        sys.exit()

上記のプログラムは以下のように、出力結果は次のとおりです。

1
2
3
4

発電機

Pythonでは、降伏関数を使用して、ジェネレータ(発電機)として知られています。

違いは、通常の関数と、発電機が戻りイテレータ機能のみBuilderがイテレータであることを理解するために、より単純な反復作業を、使用することができるということです。

発電機は、プロセスを実行している呼び出し、遭遇した降伏関数は、各時間を一時停止し、現在の稼動情報、歩留まりの戻り値のすべてを保存します。 現在の場所と次の実行から次の()メソッドを実行し続けます。

次の例では、歩留まりを実現フィボナッチ列を使用しています。

#!/usr/bin/python3

import sys

def fibonacci(n): # 生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成

while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

上記のプログラムは以下のように、出力結果は次のとおりです。

0 1 1 2 3 5 8 13 21 34 55