遞迴函式、演算法和生成式
遞迴函式
遞迴指的是函式在執行過程中直接或間接的呼叫了自身。
遞迴的特點有兩個。
1.遞推:
指一層層往下推導答案(每次的推導相較前一次難度有所下降)。
2.回溯:
依據最後的結論倒推出最初需要的答案。
函式的遞迴一定要有結束條件,不然就會報錯。
為防止無限遞迴的情況,官網表示python預設的最大遞迴深度為1000次。(由於電腦效能等原因也可能是998、997次)
可以通過sys方法來檢視和設定最大遞迴深度
二分法
演算法指的是解決問題的高效方法。二分法屬於入門級的演算法。
當想要在一堆的有序的數字中找到某個數字時,可以使用二分法來有效的達成目的。
二分法的原理:
找到這堆數字的中間的數,將它與要找的數進行大小的比較,如果較大,則在較大的一半中繼續切分。
如果較小則在較小的一半中切分,直到找到要找的數。
二分法的缺陷:
只能在有序的資料集中使用,並且如果要找的數就在開頭,反而不如一個個數的笨辦法有效。
三元表示式
三元表示式是一種程式碼的簡便寫法,當功能需求只是二選一時推薦使用三元表示式。
三元表示式格式:
條件達成採用的值 if 需要達成的條件 else 條件不達成時採用的值
三元表示式可以進行巢狀,但不推薦這種形式。
因為使用這種形式是為了程式碼的簡潔,進行巢狀反而違背了這種目的。
列表生成式
列表生成式是一種簡便的生成列表的語法,它的作用是快速的生成列表。
字典生成式
如果想只通過一個列表就生成字典,可以藉助enumerate方法(列舉)。
enumerate的作用是返回兩個值,一個是數字,相當於列表的索引,另一個是列表的元素。
通過enumerate方法可以將索引值當做k值,元素當做v值來快速生成字典。
匿名函式
匿名函式指的是沒有函式名的函式。
語法格式為:
lambda 形參:返回值。
由於沒有名字,使用匿名函式需要連關鍵詞一起寫,單獨使用時其實並不方便 ,所以一般和其他函式配合使用。