什麼是函式遞迴:
函式遞迴呼叫是一種特殊的巢狀呼叫,在呼叫乙個函式的過程中,又直接或間接地呼叫了該函式本身。
其中,函式的遞迴有明確的結束條件,不能無限制的呼叫,否則會撐破記憶體,在python中限定遞迴最多呼叫1000層。
1000層這個值是大概的數值,這個數值可以通過python內建的功能進行更改。
遞迴必須要有兩個明確的階段:
回溯:遞迴必須要有乙個明確的結束條件,在滿足該條件時結束遞推,開始一層層回溯
其中,遞迴的精髓在於通過不斷的重複逼近乙個最終結果。
迴圈(while)能做的,遞迴都可以,為什麼還要遞迴?
因為相較於迴圈,遞迴無須確定迴圈次數,只需確定結束條件。
舉個例子,遞迴的應用:
二分法:
有個從小到大排列對的列表,判斷某個值是否在裡面。
nums=[1,3,7,11,22,34,55,78,111,115,137,149,246,312]
def search(search_num,nums):
print(nums)
if len(nums)==0:
print('not exists')
return
mid_index=len(nums)//2
if search_num>nums[mid_index]:
nums=nums[mid_index+1:]
search(search_num,nums)
elif search_num有名函式:基於函式名重複使用
匿名函式:沒有繫結名字的下場就是使用一次就被**了。
定義:lambda x,y: x+y
其中冒號後面的值就相當於有名函式裡的return 後面的值
res=( lambda x,y: x+y)(1,2)
max 工作原理:
1、首先將可迭代物件變成迭代器物件
2、res=next(迭代器物件)將res當作引數傳給key指定的函式,然後將該函式的返回值當成判斷的依據。
map的工作原理:
1、首先將可迭代物件變成迭代器物件
2、res=next(迭代器物件)將res當作引數傳給第一引數指定的函式,然後將該函式的返回值當成結果之一
filter工作原理:
1、首先將可迭代物件變成迭代器物件
2、res=next(迭代器物件)將res當作引數傳給第乙個引數指定的函式,然後filter會判斷函式的返回值的真假,如果為真則留下res
1、res='你好』.encode('utf-8')
res=bytes('你好』,encoding='utf-8')
2、參考ascii碼將數字轉成對應的字元
print(chr(65)) #'a'
參考ascii碼將字元轉成對應的數字
print(ord('a')) #97
3、將兩個數進行取模運算,得到商和餘數
print(divmod(10,3)) #(3, 1)
4、l=['a','b','c'] #列舉
for item in enumerate(l):
print(item)
5、l='[1,2,3]' #將字串中的東西拿出了執行一遍
l1=eval(l)
print(l1,type(l1))
print(l1[0])
6、print(round(3.3)) #四捨五入
7、print(sum(range(101))) #求和
8、將字串變成模組名
module=input('請輸入你要匯入的模組名》: ').strip() #module='asdfsadf'
m=__import__(module)
print(m.time())
python內建函式 匿名函式 遞迴
一 內建函式 內建函式詳解 二 匿名函式 匿名函式就是不需要顯示的指定函式 1 這段 2 def calc n 3 return n n 4 print calc 10 5 6 換成匿名函式 7 calc lambda n n n 8 print calc 10 匿名函式主要用來和其他函式搭配使用 ...
匿名函式,內建函式
lambda函式是一種快速定義單行的最小函式,可以用在任何需要函式的地方 一般函式定義 def fun x,y return x y匿名函式lambda定義 r lambda x,y x y print r 2,3 格式 lambda 引數列表 return 表示式 變數 lambda語句中,冒號前...
匿名函式,內建函式
匿名函式,他沒有繫結名字,使用一次即被收回,加括號既可以執行。lambda x,y x y 報錯 res lambda x,y x y 1,2 print res 不報錯 1.bytes 解碼字元 2.chr ord ascii 數字轉為字元 字元轉化為數字 3.divmod 分別取商和餘數 4.e...