匿名函数 为了解决那些功能很简单的问题 lambda
#匿名函数
# res=lambda x,y:x+y
# print(res(3,4))
# print(list(map(lambda x:x**2,[1,2,3,4])))
# print(list(filter(lambda x:x>2,[1,2,3,4])))
# dic={'k1':10,'k2':100,'k3':30}
#找到最大值所对应的键
# print(max(dic,key=lambda k:dic[k]))
#reduce:处理一个序列,然后把序列进行合并操作
# from functools import reduce
# num=[1,2,3]
# s1=reduce(lambda x,y:x+y,num)
# s2=reduce(lambda x,y:x+y,num,2)
# print(s1,s2)
递归函数
递归 在一个函数里再调用这个函数本身
递归的最大深度
优点 代码简单
缺点 占内存
#递归的最大深度 997
# def foo(n):
# print(n)
# n+=1
# foo(n)
# foo(0)
#设置递归最大深度
# import sys
# sys.setrecursionlimit(1000)
#简单实例
# def age(n):
# if n==1:
# return 40
# else:
# return age(n-1)+2
# print(age(4))
# 阶乘
# def fac(n):
# if n == 1 :
# return 1
# return n * fac(n-1)
#
# print(fac(100))
#二分查找算法
# l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
# def find(l,aim,start = 0,end = None):
# end = len(l) if end is None else end
# mid_index = (end - start)//2 + start
# if start <= end:
# if l[mid_index] < aim:
# return find(l,aim,start =mid_index+1,end=end)
# elif l[mid_index] > aim:
# return find(l, aim, start=start, end=mid_index-1)
# else:
# return mid_index
# else:
# return '找不到这个值'
#
#
# ret= find(l,43)
# print(ret)
#斐波那契数列
# def fib(n):
# if n == 1 or n==2:
# return 1
# return fib(n-1) + fib(n-2)
# print(fib(5))
#
# def fib(n,a=1,b=1):
# if n==1 :
# return a
# return fib(n-1,b,a+b)
#
# print(fib(5))