""" 1.lambda 函数: 匿名函数 # 格式 lambda 参数: 返回值 # f = lambda a,b,c: (a+b)*8 # re = f(1,2,8) # print(re) #2, sorted排序, #格式 sorted(iterable,key=func,reverse = True/False) ,默认 按数字正序排序 # 执行流程: # 把可迭代对象中的每一个元素拿出来, 放到func中运行. 返回一个数字. 根据数字进行排序 # li = [0,4,2,3,4,6,7,8,8] # print(sorted(li)) # re = sorted(li, key=lambda x: x>2, reverse=True) # print(re) #3 .filter() 筛选 filter(func, iterable) # 执行流程: # 把可迭代对象的每一个元素拿出来,交给func函数运行,返回值True或者False,保留结果为True,的元素,舍弃运行结果Falsed # li = [1,2,3,4] # a = filter(lambda x:x>1,li) # print(list(a)) #4 . map 映射,filter(func, Iterable) # 执行流程: # 把可迭代对象中的每一个元素拿出来, 放到func中运行.返回数据就是结果 # li = [1,47,147,4,4,7] # rel = map(lambda a :a+1,li) # print(list(rel)) #5 .递归 自己调用自己 递归的入口 递归的出口: return 递归的循环条件:动 def func(): print("hello world!") dunc() # 递归入口 import os def func(file_p, cen=0): li = os.listdir(file_p) for file in li: file_new_path = os.path.join(file_p,file) if os.path.isdir(file_new_path): print(" "*cen, file_new_path) return func(file_new_path,cen+1) else: print(" "*cen,file) else: return func("E:cntv",0) 6 二分法查找 核心思想: 掐头结尾取中间. 前提条件: 有序. lst = [5,9, 8,4,21,1,8,7,54,9,9,5,84,21,8] def fin(n,ls): st = 0 en = len(ls)-1 mid = (st + en) // 2 # 取中间数值 if st <= en: if n > ls[mid]: st = mid + 1 return fin(n,ls[st:]) # 返回截取剩余的列表数据 elif n < ls[mid]: en = mid - 1 return fin(n,ls[:en]) ## 返回截取剩余的列表数据 else: print("在这里!") # 查询到结果 return True else: return "不再" #查询结束, 结果不再其中 lst.sort() print(lst) print(fin(84,lst)) li = [1,5,58,7,8,2,4,5,9] def cha(n, ls ,le = 0,ri = None): if ri == None: ri = len(ls)-1 mid = (le + ri) if le <= ri: if n > ls[mid]: le = mid + 1 elif n < ls[mid]: ri = ri -1 else: return mid return cha(n,ls,le,ri) # 循环查询列表锁定去 else: return "-1" print(cha(1,li))