組み込み関数の一般的な再帰的列挙Pythonのイテレータジェネレータ

イテレータ

Iteratorオブジェクト:オブジェクトが__nextた__()メソッドは、イテレータオブジェクト、ターン値のイテレータオブジェクトの依存関係__next __()メソッドであります

(で開く' の名前付きTEXT.TXT '' RB ' :F AS)
    RES = F. __next__()  最初の行の
    印刷(RES)
    RES = F. __next__() コンテンツの第2行
    印刷(RES)

 

ジェネレータ

Pythonでは、関数発生器を使用して収率(発電機)と呼ばれます。

差は通常の関数と、ジェネレータはリターンイテレータ機能のみの操作を反復するために使用することができるということである、より単純ジェネレータはイテレータであると理解。

呼発生器は、各遭遇収率機能が一時停止を実行し、現在の動作情報の全てを保存している間に、収率の戻り値、及び(次の次の実行)は、その現在位置方式で動作し続けます。

ジェネレータ関数を呼び出すと、それはイテレータオブジェクトを返します。

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

インポートSYS 
 
DEFフィボナッチは、(N):#1 ジェネレータ関数-フィボナッチ 
    A、B、カウンタ= 0 ,. 1 、0
     ながらTRUE:
         IF(カウンタ> N-): 
             戻り
        収量A 
        A、B = B、A + Bを
        カウンター。+ = 1 
F =フィボナッチ(10) Fは、発電機から返すイテレータを生成している
 
間は真:
     試してみる印刷(次(F)、終了= "  " を除いて呼び出すとStopIteration:
        sys.exit()

実行結果0 1 1 2 3 5 8 13は、21である34であり、55          
 

#列挙

これは、イテレータオブジェクトであるとイテレータオブジェクトの反復インデックスを追加することです

S = ' ABN ' 
のための V 列挙(S):
     プリント(V)

#1 结果
'' ' 
(0、 'A')
(1、 'B')
(2 'N')
'''

#作品を送ります

現在の降伏停止する#1 1.send発生情報
再び#2コール__next __()メソッドを、次いで下方ジェネレータ、降伏値に向けて次の停止を返します
=人の[ ' ジョー・スミス'' ジョン・ドウ'' 王5 '' 趙6 '' 銭の七' ] 

DEF 注文(人):
      I におけるレンジ(LEN(人)):
         IF I == 0 :
             印刷' %sのインタビュー'%の人々 [0])
         印刷' と呼ばれる%sの%sのインタビュー'(名前、人物[I]))
         を印刷' %完全なインタビューS '%の人々 [I])
        名前 = 降伏者[I]は

OBJ = 受注(人)
 のための I におけるレンジ(LEN(人)):
     IF I == 0:
        P。=のOBJ __next__ ()
     
        P = obj.send(P)
     を印刷' ============================= ' 

'' ' 
ジョー・スミスインタビュー
ジョー・スミスはインタビュー終了
============================= 
インタビューでチャン・交通のLi 4を
インタビューがDoeの完成され
====== =======================
ジョン・ドウのインタビューで嵐5に 
王呉のインタビューが完了しています
============================= 
インタビューの中で王5 Jiaozhaoの第六
インタビューは趙6完了する
=== ========================== 
趙銭のインタビューに呼ば7は6 
銭の7人のインタビューを終え
============= ================ 
'' '

一般的な組み込み関数

フォーマット匿名ラムダ関数:コロンは、式の右側にカンマ、コロンで区切られ、パラメータは複数持つことができている前に。実際には、戻り値は、関数オブジェクトであるラムダ関数のアドレスです。

=ラムダX、Y、Z(X + 8)* YZ 
プリント((5,6,8))  

種類に関連付けられた#1
#リスト()STR()ORD ()CHR()ブール値()int型()...

印刷(ORD( 'A'))
プリント(CHR(97))

#2値化
プリント(ビン(10))#1010
を印刷(OCT(10))#12は、
プリント(16進数(10))#1 A

プリント(0b1111)#15
プリント(0o10)8位
プリント(0x11を)#17


3.共通オペレーションクラス#1
#範囲()LEN()ITER ()次の())()オープン)(タイプ)()(プリント()入力(IDを列挙する

#文字列リテラル4.
印刷(R'a \のNb ')
印刷(ASCII(' A \のNb '))
を印刷(のrepr(' A \のNb「))


数学的な相関操作#の
#のABS()SUM()MAX()分()POW()(ソート)
を印刷(ABS(-1))
を印刷(POW(2 ,. 3))。3#2 **
印刷(POW (2、3、3))** 2#3の3%

 

再帰

 

再帰#:
関数が再帰的に呼び出され、直接的または間接的に自分自身を呼び出す
バックトラック#:答えを探しているのプロセス
#再発:プロセスの結果が発足

 

#前提条件:
#1.再帰の終了が存在しなければならない
一定の条件の定期的な再発をバックトラック#2再帰

 

# 递归

def get_age(count):
    if count == 1:
        return 58
    age = get_age(count-1)-2
    return age
age = get_age(3)
print(age)

'''
递归 函数直接或间接调用自身的都是递归 
递归有两个特点  一个是递推  一个是回溯  起始步骤是递推 当递推满足函数第一个return时  递推走完  开始回溯 就是从递推结束的参数往回到原始值
此题中  count最初是3  第一次走完 count为2  第二次走完count为1 此时return 58 递推走完了 
开始回溯 回溯第一次走完count为2  再走一次count为3 此时递归结束  此次过程中有两次是分别是58-2 和56-2   故最终结果是54
'''

 

 

 

 

おすすめ

転載: www.cnblogs.com/wakee/p/11599001.html
おすすめ