1. 程式人生 > 其它 >9 — 整合jdbc、druid、druid實現日誌監控 — 更新完畢

9 — 整合jdbc、druid、druid實現日誌監控 — 更新完畢

一.遞迴函式

遞迴:函式在執行過程中 直接或者間接的呼叫了自身 遞迴一定要有結束條件。

官網表示: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 in
l: 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)