匿名函數,映射函數。

  1. lambda 匿名函數
  語法:
    lambda 參數:返回值
      不能完成複雜的操做python

 1 def func(n):
 2     return n * n
 3 
 4 print(func(3))
 5 a = func
 6 a(3)
 7 print(a.__name__)    # 查看函數的函數名
 8 # lambda 匿名函數
 9 # x 參數
10 #  : 後面是函數體(直接return的內容)
11 a = lambda x: x*x   # 一行搞定一個函數. 可是, 不能完成複雜的函數操做
12 print(a)
13 print(a(6))
14 print(a.__name__)
15 
16 b = lambda x, y: x+y
17 print(b(1,3))
18 print(b.__name__)
19 
20 # 語法: 變量 = lambda 參數: 返回值

 

2. sorted() 函數
  排序.
    1. 可迭代對象
    2. key=函數. 排序規則
    3. reverse. 是否倒序
    3. filter() 函數
  過濾
    1. 函數, 返回True或False
    2. 可迭代對象函數

# lst = [5,7,6,12,1,13,9,18,5]
# # lst.sort()  # sort是list裏面的一個方法
# # print(lst)
#
# ll = sorted(lst, reverse=True) # 內置函數. 返回給你一個新列表  新列表是被排序的
# print(ll)


# 給列表排序. 根據字符串的長度進行排序
lst = ["大陽哥a", "尼古拉斯aa", "趙四aaa", "劉能a", "廣坤aaaaaa", "謝大腳a"]
#
# def func(s):
#     return s.count('a') #  返回數字
#
# ll = sorted(lst, key=lambda s:s.count('a')) # 內部. 把可迭代對象中的每個元素傳遞給func
# print(ll)
#
# lst = [
#         {'id':1, 'name':'alex', 'age':18},
#         {'id':2, 'name':'taibai', 'age':58},
#         {'id':3, 'name':'wusir', 'age':38},
#         {'id':4, 'name':'ritian', 'age':48},
#         {'id':5, 'name':'女神', 'age':18}
#        ]
#
# ll = sorted(lst, key=lambda dic:dic['age'], reverse=True)
# print(ll)

 

# def func(i):    # 判斷奇數
#     return i % 2 == 1
lst = [1,2,3,4,5,6,7,8,9]

ll = filter(lambda i:i%2==1, lst)
#  第一個參數. 函數. 將第二個參數中的每個元素傳給函數. 函數若是返回True, 留下該元素.
# print("__iter__" in dir(ll))
# print("__next__" in dir(ll))
# print(list(ll))

# lst = [
#         {'id':1, 'name':'alex', 'age':18},
#         {'id':2, 'name':'taibai', 'age':58},
#         {'id':3, 'name':'wusir', 'age':38},
#         {'id':4, 'name':'ritian', 'age':48},
#         {'id':5, 'name':'女神', 'age':18}
#        ]
#
# print(list(filter(lambda dic: dic['age']>40, lst)))

 

4. map() 映射函數
    1. 函數
    2. 可迭代對象
    5. 遞歸spa

# lst = [1,2,3,4,5,6,7,8,9,0,23,23,4,52,35,234,234,234,234,234,23,4]
# it = map(lambda i: i * i, lst) # 把可迭代對象中的每個元素傳遞給前面的函數進行處理. 處理的結果會返回成迭代器
# print(list(it))


# lst1 = [ 1, 2, 3, 4, 5]
# lst2 = [ 2, 4, 6, 8]
# print(list(map(lambda x, y:x+y, lst1, lst2))) # 若是函數中有多個參數. 後面對應的列表要一一對應

 

# import sys
# sys.setrecursionlimit(10000)    # 能夠調整遞歸深度. 可是不必定能跑到這裏
# def func(count):
#     print("我是誰,我在哪裏"+str(count))
#     func(count+1)
# func(1)

# while 1:
#     a = 10
#     print("哈哈")

# 遍歷樹形結構
# import  os
# filePath = "d:\sylar\python_workspace"
#
# def read(filePath, n):
#     it = os.listdir(filePath)   # 打開文件夾
#     for el in it:
#         #  拿到路徑
#         fp = os.path.join(filePath, el) # 獲取到絕對路徑
#         if os.path.isdir(fp):   # 判斷是不是文件夾
#             print("\t"*n,el)
#             read(fp, n+1)    # 又是文件夾. 繼續讀取內部的內容 遞納入口
#         else:
#             print("\t"*n,el)    # 遞歸出口
#
# read(filePath, 0)

本身調用本身.
    def func():
    func()
    func()
  難點:很差想.須要找規律. 很差讀code

 

6. 二分法
  掐頭結尾取中間. 不停的改變左和右. 間接改變中間. 查詢效率很是高對象

# lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111]
# n = 567
# left = 0
# right = len(lst) - 1
# count = 1
# while left <= right:
#     middle = (left + right) // 2
#     if n > lst[middle]:
#         left = middle + 1
#     elif n < lst[middle]:
#         right = middle - 1
#     else:
#         print(count)
#         print("存在")
#         print(middle)
#         break
#     count = count + 1
# else:
#     print("不存在")
lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111]

def binary_search(left, right, n):
    middle = (left + right)//2
    if left > right:
        return -1
    if n > lst[middle]:
        left = middle + 1
    elif n < lst[middle]:
        right = middle - 1
    else:
        return middle
    return binary_search(left, right, n)
print(binary_search(0, len(lst)-1, 65) )


def binary_search(lst, n):
    left = 0
    right = len(lst) - 1
    middle = (left + right) // 2
    if right <= 0:
        print("沒找到")
        return
    if n > lst[middle]:
        lst = lst[middle+1:]
    elif n < lst[middle]:
        lst = lst[:middle]
    else:
        print("找到了")
        return
    binary_search(lst, n)
binary_search(lst, 65)
相關文章
相關標籤/搜索