1. 程式人生 > >day13-14 內建函式

day13-14 內建函式

 

具體內容參考:http://naotu.baidu.com/file/b337aca025ccb35b746cc872265ec1a7?token=312080d5f0e65fd2

今日主要內容
1. 匿名函式
函式回顧:
def 函式名(形參):
函式體(return)

函式名(實參)

形參:
1. 位置引數
2. 預設值引數
3. 動態傳參
*args: 動態接收位置引數
**kwargs: 動態接收關鍵字引數

位置 > *args > 預設值 > **kwargs

實參:
1. 位置引數
2. 關鍵字引數
3. 混合引數

lambda 引數: 返回值
   用於解決一些簡單的需求, 用一行程式碼實現
  注意事項:1.函式的引數可以多個,多個引數之間用逗號隔開
       2.不管函式多複雜,只能寫一行,且邏輯結束後直接返回資料
       3.返回值和正常函式一樣, 可以是任意資料型別

2. sorted
排序 將sorted內部可迭代物件的每一個元素傳遞到key的引數, 根據函式運算的結果排序
sorted(Iterable, key, reverse)
3. filter
篩選 將Iterable可迭代物件的每一個元素傳遞給function, 根據function返回True或者False判斷是否保留此項資料
filter(function, Iterable)
4. map
對映 將Iterable可迭代物件的每一個元素進行對映, 分別去執行function, 保留最後的執行結果
map(function, Iterable)
5. 遞迴
自己呼叫自己
  遞迴深度: python中最大的遞迴深度是1000 但是你永遠到不了1000
    6. 二分法(遞迴的應用)
開頭
結尾
中間
非遞迴二分法:
lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963]

n = int(input("請輸入一個數字n:")) # 56

left = 0 # 左邊界
right = len(lst) - 1 # 末尾的索引  右邊界
while left <= right: # 當左邊界大於右邊界結束迴圈

    mid = (left + right) // 2 # 求中間的索引座標
    if n < lst[mid]: #
判斷你的數字和中間數的大小比較 . right = mid - 1 # 右邊界往左移動 elif n > lst[mid]: left = mid + 1 # 左邊界往右移動 else: print("找到了") # 找到了目標數字 break else: # 當左比右大, 迴圈結束. 沒有找到目標數 print("沒找到")
View Code

 遞迴二分法1:

lst = [4, 56, 178, 253, 625, 1475, 2580, 3574, 15963]

def binary_search(lst, n, left, right): if left > right: return False mid = (left + right) // 2 if n > lst[mid]: left = mid + 1 # 當遞迴有返回值的時候. 需要寫return. 否則有可能接收不到返回值 return binary_search(lst, n, left, right) elif n < lst[mid]: right = mid - 1 return binary_search(lst, n, left, right) else: print("找到了") return True n = int(input("請輸入一個數字n:")) # 178 ret = binary_search(lst, n, 0, len(lst)-1) print(ret)
View Code

   遞迴二分法2:(切換列表)

切換列表
def binary_search(lst, n):
    if len(lst) == 0:
        return False
    left = 0
    right = len(lst) - 1
    mid = (left + right) // 2
    if n > lst[mid]:
        left = mid + 1
        # 當遞迴有返回值的時候. 需要寫return. 否則有可能接收不到返回值
        return binary_search(lst[mid+1:], n)
    elif n < lst[mid]:
        right = mid - 1
        return binary_search(lst[:mid], n)
    else:
        print("找到了")
        return True

n = int(input("請輸入一個數字n:")) # 178
ret = binary_search(lst, n)
print(ret)
View Code