イテレータプロトコルジェネレータと

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  発電機はまた、流れ制御構造におけるその位置を(命令型プログラミングでは、この構成は、データ値だけでなく)「記憶」、その状態データを「記憶」しないだけを生成します。

 

おすすめ

転載: www.cnblogs.com/luoluokang/p/12536409.html