ホームページ  >  記事  >  バックエンド開発  >  Pythonのyield式の学習

Pythonのyield式の学習

WBOY
WBOYオリジナル
2016-06-16 08:42:111340ブラウズ

Python には、yield 式と呼ばれる少し奇妙な式があります。この記事では、それが何であるかを説明します。一歩ずつ進めていきましょう。

反復可能

コードをコピー コードは次のとおりです:

mylist = [1,2,3]
マイリストの項目:
str(項目)を印刷

マイリストは、各項目を 1 つずつ取り出すことができます。このプロセスはイテレーションと呼ばれます。 「for...in...」を使用して順番に走査できるリストのようなオブジェクトはイテラブルと呼ばれます。その他のイテラブルには、文字列、タプル、辞書などが含まれます。 iterable の特徴の 1 つは、すべての項目がメモリに格納されることですが、これによっていくつかの不都合や欠点が生じるため、ジェネレーター (後述) が生まれました。

リスト内包表記 (リスト内包表記)

コードをコピー コードは次のとおりです:

mylist = [range(3) の x の x*x]

式の右側は、[] で囲まれた for ループの省略形です (リスト内包表記と呼ばれます)。式の値は、その要素を調べるために「for...in...」を使用できます。通常のリストと同様、次のようなもの:
コードをコピー コードは次のとおりです:

マイリストの項目:
str(項目)を印刷
ジェネレーター

ジェネレーター

上記のリストの内包表記を少し変更します:

コードをコピー コードは次のとおりです:

mygenerator = (x*x for x in range(3))
mygenerator の項目:
項目を印刷

この時点で、式の値はリストではなくジェネレーターになっていることがわかります。

Generator も iterable に属しますが、その呼び出し方法は非常に特殊です。

収量

コードをコピー コードは次のとおりです:

def creatGenerator():
マイリスト = range(3)
マイリストの x について:
収量 x*x

mygenerator = creatGenerator()

mygenerator の x の場合:
印刷(x)


yield の使用法は return と同じです。しかし (ここが重要です):
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。