再帰関数
再帰(再帰は):関数内自分自身を呼び出します。
バックトラックと再帰:再帰は2つの段階に分かれています。
戻る:終了条件は、最後満たされるまで戻って一度、問題の複雑さはさらに、削減されます。
再帰:終了条件が確立され、何度も何度も戻って推定されます
L = [1、[2、[3、[4、[5、[6、〔7、[8、[9、[10、[11、[12、[13 、]]]]]]]]] ]]]] DEF (L)get_num: のために私にL: 場合はタイプ(i)があるINT: プリント(I)の 他: get_num(I) get_num(L)
sys.getrecursionlimitによって導入インポートSYSモジュールpycharm()メソッドは、デフォルト値が知られている1000を再帰が、実際には唯一997(0から始まります)。
()メソッド、再帰は、sys.setrecursionlimitスルー層の指定された数。
代わりに、2つの方法でコードブロックの:
第一の方法は、パス(推奨パス)交換する
第2置換方法を...
II。二分法
シナリオ:注文した容器の中に値を見つけます
方法を探す:真ん中を比較し始めている時間を検索します。
L = [1,2,3,4,5,6,7,8,9,10 ] カウント = 0 ターゲット = 5 DEF find_two(LI、ターゲット): グローバルカウント プリント(カウント) プリント(LI) カウント + = 1枚の プリント(LEN(LI)// 2 ) 中間 = LEN(LI)// 2 であれば目標< リチウム[中央]: 左 = 李[0:中間] find_two(左、ターゲット)ELIFの目標< リチウム[中央]: 右 =のLi [中間+ 1 :] 印刷 find_two(右、ターゲット) (右) elifの李[ミドル] == 対象: 印刷(" 見つける" 、カウント) find_twoを(L、ターゲット)
三三元表現
> B他のBの場合
条件は、バック他の以前の値、そうでない場合、戻り値に後者の復帰場合は満たされている場合
シナリオ:条件の唯一の2つの場合
IV。式
式の1一覧
フォーマット:[決意条件内の変数名の変数名であれば容器の種類]
L = [ ' タンク'、' ニック'、' オスカー'、' ショーン' ] RESの [= " %のs_rich "%iは、のために I における L 場合 i.endswith(' K ' )] プリント(RES)
式の2辞書
フォーマット:{キー:キーの値:決意条件であれば容器の種類の値}
L1 = [ ' ジェイソン'、' 18 '、' DBJ ' ] RES = {I:jのための I、J に列挙(L1)であれば!J = ' 18 ' } プリント(RES)
3.収集式
フォーマット:{コンテナのタイプ決意条件場合に変数名の変数名}
プリント({I 用 I における範囲(10)であれば、I!= 9})
4.ジェネレータ式
コンテナ内の変数名のフォーマット:(変数名かの種類の判定条件)
V.無名関数の紹介
匿名機能:なし関数名のみ破壊にアドレスが不足する、一度一時的に使用することはできません。
ラムダ関数パラメータ:関数の戻り値
MAX(DIC、キー= ラムダ K:DIC [K])
PS:他の機能を持つ匿名関数が通常使用します。
VI。一般的な組み込み関数
マップ(FUNC、*イテラブル)マッピング機能
= L [1,2,3,4,5 ] 印刷(リスト(マップ(ラムダ:Y 10 Y +、L))) #の 関数呼び出しの前に、各要素の容器の種類を、戻り値新たに生成しますリスト。
ZIP ([ 反復処理可能な、...])圧縮機能
L1 = [1,2 、] L2 = [ ' ジェイソン'、' エゴン'、' タンク' ] L3 = [ ' A '、' B '、' C ' ] ジッパー = リスト(ZIP(L1、L2、L3) ) #は、リスト内のタプルの形式で格納容器タイプの複数の対応する要素とすることができます。戻り値はアドレスである #のリストの長さは、コンテナ最短の種類によって異なります。リストには、ジップのリストにオブジェクトを変換するために使用することができます 印刷(ジッパー) 印刷(リスト(ZIP(* ジッパー))) #*プロセスのzipを逆転するために使用することができます
フィルタ(関数、反復処理可能)フィルタ関数
= Lは、[1,2,3,4,5,6 ] 印刷(リスト(フィルタ(ラムダ Y :! Y = 10 、L))) #1 、フィルタアウト状態によって不要な要素、および新しいリストを生成します
ソート(反復可能、逆=ブール値):
= L [1,2,3,4,5,6 ] 印刷(ソート(L、リバース= TRUE)) #のDESCの 印刷(ソート(L、偽=リバース)) #の昇順
削減(機能、反復可能な、イニシア=なし)
functoolsから必要な機能を減らす使用インポート機能を減らすインポート
functools インポート減らす L = [1,2,3,4,5,6 ] 印刷(減らす(ラムダ:X + Y、L ,. 19 X、Y )) #場合は、最初の2つのコンテナの値を取得するために匿名関数を空でない場合、最初のコンテナの初期値にコンテナを置く #全てを取得するまで、その値によって除去し、そして追加した;彼はリストに加えて、デフォルト値。