pythonアドバンスドチュートリアル(3)-ジェネレータyieldと反復器iter


python大講堂へようこそ、IDEを開けてpythonの旅を始めましょう.
ジェネレータyield
まず例を見てみましょう
def get(n):
    for i in range(n):
        yield i

numbers=get(5)
for i in numbers:
    print(i)

次のようになります.
0
1
2
3
4

なぜこのチュートリアルを書くのですか?ネット上には多くのyieldの複雑な解釈があることに気づいたので、初心者にもっと簡単に展示したいと思っていたので、このチュートリアルがありました.
本題に戻って、上記の例を見てみましょう.まず、rangeで0からn-1の数を取得し、yieldを使用して結果を返すパラメータを持つget関数を構築しました.
ではyieldとreturnの違いは何ですか?簡単に言えば、returnは1つのデータ型しか返さず、yieldは複数を返すことができます.
yieldを使用すると、戻ってきた結果をリストに入れて抽出するのを待っているようなものになります.そのため、forループを使用して戻ってきた結果を抽出して印刷します.そのため、この5つの数が得られました.returnというプログラムをどのように書くべきかを見てみましょう.
def get(n):
    list=[]
    for i in range(n):
        list.append(i)
    return list

numbers=get(5)
for i in numbers:
    print(i)

これは明らかに同じ結果を得ることができますが、returnは1つのデータ型しか返さないので、空のリストを定義して、数をリストに追加してリストを返すしかありません.そうすれば、分かりますか?
反復器iter
反復は、コレクション要素にアクセスする方法であり、場所を巡るオブジェクトを記憶することができます.反復オブジェクトは、すべての要素がアクセスされるまで、コレクションの最初の要素からアクセスを開始します.
反復器にはiter()とnext()の2つの方法があります.文字列、リスト、またはメタグループは、反復器を作成するために使用できます.
list=[0,1,2,3,4]
it = iter(list)
for x in it:
    print (x)

まずiterで反復オブジェクトを作成し、ループループを使用すると、次のようになります.
0
1
2
3
4

次にnext()メソッドで実装します.
import sys
list=[0,1,2,3,4]
it = iter(list)
while True:
    try:
        print(next(it))
    except:
        sys.exit()

またね!