1.收斂條件 - 讓遞迴在有限次數內完成或者進行回溯
python預設的最大遞迴深度是998,如果遞迴無法在限定次數內收斂,就有可能導致recursionerror。
2.遞迴公式
舉個栗子:有十級台階,一次走1到3步,有多少種走法?
def
walk
(n):
# 收斂條件
if n < 0:
return
0elif n == 0:
return
1# 遞迴公式
return walk(n - 1) + walk(n - 2) + walk(n - 3)
legb規則
python搜尋乙個變數的方式是從區域性作用域到巢狀作用域再到全域性作用域再到內建模組
local - enclosed - global - built-in
如果想改變搜尋範圍,可以使用global和nonlocal關鍵字
a = 100
deffoo
():# local variable
# 函式內的區域性變數 離開foo函式變數a是無法訪問的
a = 200
b = 'hello'
defbar
():global a
nonlocal b
b = 'good'
print(a)
print(b)
bar()
print(b)
if __name__ == '__main__':
foo()
上面**輸出結果為:
100
good
good
在這裡,如果函式bar()裡沒有global a, nonlocal b這兩行**,將輸出:
200
good
hello
其中a的值(200)來自上一級的a = 200(enclosed),b的值(hello)是來自foo()的local variable。
加上global a, nonlocal b,a的值取到了全域性變數a = 100,b的值(第二個good)則來自巢狀作用(enclosed)域的b = 『good』
用列表的生成表示式語法建立列表
時間和空間是不可調和的矛盾。
用生成表示式語法建立列表之後,元素就已經準備就緒,所以需要耗費較多的記憶體空間。用列表生成器的時候,這裡得到的不是乙個列表,而是乙個生成器物件,
通過生成器可以獲取到資料,它不占用額外的空間儲存資料,但是每次需要資料的時候就要通過生成器獲取資料,需要花費時間。
在很多時候,程式設計師都將面臨時間與空間的矛盾,這需要我們根據實際情況進行取捨。
python基於列表可以實現crud操作:create read update delete。
利用列表生成式解決楊輝三角:
def
yanghui_********
(n):
list1 = [1]
for _ in range(n):
yield list1
list1 = [list1[i - 1] + list1[i] for i in range(len(list1))]
python基礎貼士
縮排與對齊 通過乙個小技巧優化 下面這兩段 展示了通過削減迴圈次數來提高執行效率。求10000以內的完美數 from time import time start time for num in range 1,10001 my sum 0 for i in range 1,num if num i...
latex寫作格式貼士
latex寫作格式貼士 lyx行文新增前 1 對目錄和參考文獻超連結以及顏色的設定 usepackage pagebackref true,breaklinks true,colorlinks,bookmarks false 引用 usepackage 時態選擇 一般現在時,現在完成時。不用一般過去...
有效進行網路通訊的貼士
蜂窩網和wi fi無線網都被設計為在沒有資料傳輸活動時關閉電源。然而,根據無線網路的不同,這樣做可能需要花幾秒鐘的時間。如果您的應用程式每隔數秒就傳送少量的資料,則即使無線裝置實際上並沒做什麼,也會一直保持電源開啟,持續耗電。相比於經常性地傳輸少量資料,一次性傳遞所有資料或間隔時間較長但每次傳遞資料...