1 位イテレータプロトコル何 2 # 1は、イテレータプロトコルを意味する:次のオブジェクトは、メソッドのいずれか戻りを次の反復を行う、又は、stoplteration例外を引き起こす方法を提供しなければならない 3 位のみ(反復を終了します)バックしない前方、後方に行くことができる 4つの # イテレータオブジェクト実装プロトコル(方法:__iter内部ターゲットを定義__()は:方法)2イテラブル 5 # 3プロトコルは、月慣例であります反復イテレータオブジェクトが実装するプロトコル、Pythonの内部ツール(例えば、ループ、和、MIN、MAX関数、等)イテレータプロトコルを使用して、オブジェクトにアクセスするための 6 位 。7 。8 。9 #ジェネレータは何ですか? 10 #は、データ・タイプとして理解することができ、そのデータ型が自動的に反復プロトコルので、発電機であることをイテレート可能オブジェクト(他のデータ・タイプは、独自の内蔵__iter__メソッドを呼び出す必要がある) 11 # 12 #ビルダーPythonでの分類と実現形態:(Pythonの発電機は、さまざまな方法を提供している) 13 #1 14 #ジェネレータ関数:一般的な機能を定義し、代わりにyield文return文の戻り結果を使用します。収量声明は、結果を返す 15 #各結果の途中で、関数の保留状態、それが中断次再開こと。 16の #ジェネレータ式:リストを導出と同様に、しかし、構築後むしろ結果のリストよりも、需要の生産に結果を生成するオブジェクトを返す 。17 18である 。##イテレータ 。19 #L = [「WO」、「Erzi '' sunzi '' chongsunzi「] 20 #iter_l = L .__ ITER __() 21は #印刷(iter_l .__次に__()) 22であり、 #(iter_l .__次に__())プリント 23である #印刷(iter_l .__次に__()) 24 #印刷(iter_l .__次__()) 25 #の印刷(iter_l .__次__())#StopIteration 26で 27 28 #ジェネレータ###に自動的に反復プロトコル 29 30 #官能フォーム 31は 32 #:DEFテキスト() 33は # 収率1。 34が # 収率2 35 # 収率3。 36 37 [ #G =テキスト() 38である #印刷(G) 39 #G .__次に__() 40 41である #印刷(G .__次に__()) 42は、 #(G .__次に__())プリント 43であり、 #(G .__次に__())印刷
リスト内包との三項演算子
#式の#Aトリプレット #名= 'yuanha' #RES = 'SB'の場合名前== 'yuanhao'他'zhizhang' #プリント(RES) ###リスト内包 #egg_list = [] #範囲のiについて(12): # egg_list.append( '鸡蛋%S' %I) #1 プリント(egg_list) # #[範囲(18)内のiについてi]はL = #1 プリント(L) # #[範囲(18)内のiについて'鸡蛋%S' %i]がL = #1 プリント(L) # #L = [ '卵%S' %iに対するI IN範囲(18)であればI> 6] ## A三重式のの #の印刷(L) #Yuanhaoziadan =( '息子%s'は%I I inの範囲(10))#のジェネレータ式の保存より多くのメモリ #印刷(yuanhaoziadan .__次__()) #の印刷(yuanhaoziadan .__次__()) #プリント(和((I ** 2 Iの範囲内の(2))))
生成機能
1つの ###生成器函数 2 3 #インポート時間 4 #DEFテキスト(): 5 # 収率1つの 6 # 収率2つの 7 #RESが=テキスト() 8 #プリント(RES .__次__()) 9 #プリント(RES。 __next __()) 10 11 #DEF包子(): 12の # RES = [] 13 # の範囲内のiについて(10): 14 # res.append( '包子%S' %I) 15 # 戻りRES 16 #baozi_list =包子() 17 #の印刷(baozi_list) 18である 19。 #DEF包子(): 20である # 範囲(10)内のiについて: 21である 。# ('ベーキング')プリント 22である # 収率'おいしいパンS%' %I 23は、 # (印刷'売りバン') 24 #A =包子() 25 #B = A .__次に__() 26は ###追加コード 27 #B = A .__次に__() 28 29 30 #包子=( 'バン%S' %I (7)のための範囲内I)が 31である #の印刷(包子.__次__()) 32 33がある #DEF xiadan(): 34 # の範囲内のiについて(1000): 35 # 収率'鸡蛋%S' %I 36 # 37 #アレックス= xiadan() 38 # 39 #jidan =アレックス.__次__() 40 #jidan =アレックス.__ __次の() 41 #jidan =アレックス.__次__() 42 #jidan =アレックス.__次__() 43 #jidan =アレックス.__次__() 44 #jidan =アレックス.__次__() 45 # 46 # 47 #プリント(jidan) 48 49 #異常遭遇呼び出すとStopIterationの終わりまでBuilderは、値を反復するたびに返され、シリーズの結果は保存されませんが、状態発生器に保存された 50 #Builderは覚えている機能ですときに、関数の本体復帰位置。ジェネレータ機能に対する第二(又はn番目の)中間にジャンプする機能を呼び出し、 51個の #すべてのローカル変数は、最後の呼び出しのために不変のままです。 52 #発電機はまた、流れ制御構造におけるその位置を(命令型プログラミングでは、この構成は、データ値だけでなく)「記憶」、その状態データを「記憶」しないだけを生成します。