遞歸函數:python
什麼是遞歸函數?函數
函數遞歸調用:在調用一個函數的過程當中,又直接或間接地調用了該函數自己。code
遞歸必需要有兩個明確的階段:對象
①遞推:一層一層遞歸調用下去,強調:每進入下一層問題規模減小blog
②回溯:遞歸必需要有一個明確的結束條件,在知足該條件時,結束遞推,開始一層一層回溯遞歸
遞歸的精髓在於經過不斷地重複逼近一個最終的結果utf-8
遞歸的應用:字符串
二分法:it
l=[1,2,10,30,33,99,101,200,301,311,402,403,500,900,1000] #從小到大排列的數字列表 def search(n,l): print(l) if len(l) == 0: print('not exists') return mid_index=len(l) // 2 if n > l[mid_index]: #in the right l=l[mid_index+1:] search(n,l) elif n < l[mid_index]: #in the left l=l[:mid_index] search(n,l) else: print('find it') search(3,l)
匿名函數:class
什麼是匿名函數:匿名函數就是沒有名字的函數,沒有名字就意味着用一次就回收了
lambda x,y:x+y
有名函數與匿名函數的對比
有名函數:循環使用,保存了名字,經過名字就能夠重複引用函數功能
匿名函數:一次性使用,隨時隨時定義
內置函數:
names={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':2000
}
1.max() and min()
工做原理:1.首先將迭代對象變成迭代器對象
2.res = next(可迭代對象),將res看成參數返回值,傳給key指定的函數,而後將該函數的返回值看成判斷比較大小的key
max(names,key = lambda k:names[k])
2.sorted(names,key = lambda k:names[k],reverse = False)
結果爲['yuanhao', 'egon', 'wupeiqi', 'alex']
reverse 默認爲false,false爲從小到大排列
3. l = [1,2,3,4]
map(lambda x:x**2,l)
工做原理與max相同,但最後返回的是一個迭代器
4.filter(lambda k:names[k] > 5000,names)
返回值爲迭代器,留下true的結果
帶*的必須掌握
雜:abs() 求絕對值 all()迭代每一個元素,都爲True才返回True,空返回True
bin() 轉換爲二進制 any()迭代每一個元素,有一個True就返回True,空返回False
oct() 轉換八進制 *bytes(‘您好’, encoding = ‘utf-80’) = ‘您好’.encode(‘utf-8’)
hex() 轉十六進制 callable()檢測是非能夠被調用
*chr() 參考ASCII將數字轉換成對應字符串
*ord() 參考ASCII將字符串轉換成對應數字
dir(time) 列舉time.後面的全部方法 *divmod(10,3) 獲得 (3,1) 即(商,餘數)
*eval(‘[1,2,3]’) 能夠把字符串裏面的列表變成列表
frozenset({1,2,3}) 不可變集合 round(四捨五入)
globals()查看全局 locals()查看局部
__import__(‘module’)能夠用str導入模塊