1. 程式人生 > >遞歸,二分法,匿名函數

遞歸,二分法,匿名函數

rev 內存地址 from dom 過程 lis zip sorted num

遞歸調用:在調用一個函數的過程中,直接或者間接又調用了函數本身,稱之為遞歸調用。 遞歸的必備的兩階段:一:遞推 二:回溯 def foo(): print(‘abc‘) foo() foo() import sys print(sys.getrecursionlimit()) sys.getrecursionlimit(200) #設置遞歸次數 print(sys.getrecursionlimit()) def age(n): if n == 1: return 18 return age(n-1) + 2 print(age(5)) g=[1,[2,[3,[4,[5,[6,[7]]]]]]] def foo(g): for i in g: if type(i) is list: foo(g) else: print(i) foo(g) 二分法: g=[1,2,3,4,5,6,7,8,10,13,455,678,990,11111] #從小到大排列的數字列表 def foo(g,numl): print(g) if len(g) == 0: print("it is not") return fdoml=len(g) // 2 if numl > g[fdoml]: foo(g[fdoml+1:],numl) elif numl < g[fdoml]: foo(g[0:fdoml],numl) else: print(‘find it‘) foo(g,678) #zip拉鏈函數 g=‘wordwrod‘ h=[1,2,3,4] f=zip(g,h) print(list(f)) 匿名函數:lambda 沒有函數調用名稱,只生成一次存在於內存地址。 def foo(x,y): return x+y foo(1,2) 同: print(lambda x,y:x+y)(1,2) 匿名函數的使用: #max 最大 sab={ ‘a‘:1223 ‘b‘:12345 ‘c‘:34567 ‘d‘:345 } def foo(k): return sab[k] print(max(sab,key=foo)) 同: print(max(sab,key=lambda k:sab[k])) #min 最小 print(min(sab,key=lambda k:sab[k])) #sorted 排序,默認按照首字母排序 sab={ ‘a‘:1223 ‘b‘:12345 ‘c‘:34567 ‘d‘:345 } print(sorted(sab,key=lambda k:sab[k],reverae=Ture)) #reverae=Ture反轉 #map 映射 names=[‘df‘,‘gh‘,‘jk‘] u=[] for i in names: res=‘%s_bb‘ %names u.append(res) print(u) 同: g=map(lambda i:‘%s_bb‘ %i,names) print(list(g)) #reduce 合並 from functcols import reduce reduce(lambda x,y:x+y ,range(1,101)) reduce(lambda x,y:x+y ,range(1,101),100) #設定初始值,100為初始值 #filter 過濾 names=[‘df_bb‘,‘gh_bb‘,‘jk_bb‘] g=filter(lambda x:x.endswith(‘bb‘),names) print(list(g))

遞歸,二分法,匿名函數