9 — 整合jdbc、druid、druid實現日誌監控 — 更新完畢
阿新 • • 發佈:2021-11-12
一.遞迴函式
遞迴:函式在執行過程中 直接或者間接的呼叫了自身 遞迴一定要有結束條件。
官網表示:Python的預設的最大的遞迴深度為1000次
1 l = [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13, [14, ]]]]]]]]]]]]]] 2 def outer(l): 3 for i in l: 4 if type(i) == int: 5 print(i) 6 else: 7 outer(i) 8 9 10 outer(l)
遞迴函式分為
1.遞推:一層層往下推導答案(每次遞迴之後複雜度相較於上一次一定要有所下降)
2.回溯:依據最後的結論往後推匯出最初需要的答案
二.演算法之二分法
2.1 什麼是演算法
解決問題的高效方法
2.2 二分法
第一種方式 直接for迴圈從左往右依次查詢
1 while True: 2 number = input('請輸入您要查詢的數字').strip() 3 number = int(number) 4 if number not in l: 5 print('暫無此資料') 6 else: 7 for i inl: 8 if i == number: 9 print('找到了')
第二種方式 二分法(一 數集;二 必須有序)
1 def outer(target_number, l): 2 if len(l) == 0: 3 print('無此資料') 4 return 5 # 獲取中間元素的索引值 6 midle_numebr = len(l) // 2 7 # 以中間函式為分界線對l進行切片 8 if target_number > l[midle_numebr]:9 l_right = l[midle_numebr + 1:] 10 outer(target_number, l_right) 11 elif target_number < l[midle_numebr]: 12 l_left = l[:midle_numebr] 13 outer(target_number, l_left) 14 else: 15 print(target_number, '找到了')
三.三元表示式
當功能需求僅僅是二選一的情況下,那麼推薦使用三元表示式
1 def my_max(a, b): 2 if a > b: 3 return a 4 else: 5 return b
條件成立採用if前面的值,if條件不成立採用else後面的值
1 def my_max(a, b): 2 return a if a > b else b
四.列表生成式
1 name_list = ['jason', 'kevin', 'tony', 'jerry'] 2 # 給列表中所有的人名加上_DSB字尾 3 '''傳統做法''' 4 # 1.定義一個空列表 5 new_list = [] 6 # 2.for迴圈老列表 7 for name in name_list: 8 # 3.生成新的名字 9 new_name = '%s_DSB'%name 10 # 4.新增到新的列表中 11 new_list.append(new_name) 12 print(new_list) 13 '''列表生成式''' 14 res = ['%s_DSB' % name for name in name_list] 15 print(res)
五.字典生成式
1 # 字典生成式 2 l1 = ['name', 'age', 'hobby'] 3 l2 = ['jason', 18, 'read'] 4 for i, j in enumerate(l1, start=1): 5 print(i, j) 6 """ 7 1 name 8 2 age 9 3 hobby 10 11 enumerate() 12 針對該方法使用for迴圈取值 每次都會產生兩個結果 13 第一個是從零開始的數字 14 第二個是被迴圈物件裡面的元素 15 還可以通過start控制引數其實位置 16 """ 17 18 name_list = ['jason', 'kevin', 'tony', 'jerry'] 19 res = {i: j for i, j in enumerate(name_list)} 20 print(res)
六.匿名函式
1 # 字典生成式 2 l1 = ['name', 'age', 'hobby'] 3 l2 = ['jason', 18, 'read'] 4 for i, j in enumerate(l1, start=1): 5 print(i, j) 6 """ 7 1 name 8 2 age 9 3 hobby 10 11 enumerate() 12 針對該方法使用for迴圈取值 每次都會產生兩個結果 13 第一個是從零開始的數字 14 第二個是被迴圈物件裡面的元素 15 還可以通過start控制引數其實位置 16 """ 17 18 name_list = ['jason', 'kevin', 'tony', 'jerry'] 19 res = {i: j for i, j in enumerate(name_list)} 20 print(res)