Python_Mix*匿名函数,sorted,filter,map,递归函数,二分法查找

  • lambda匿名函数(函数名统一都叫lambda)
    • 为了解决简单的需求而设计的一句话函数
    • 语法:
      • lambda 参数 返回值
  •  n = lambda a,b: max(a,b)
    ret = n(9,4)
    print(ret)
    • 注意:
      • 函数的参数可以有多个,多个参数之间用逗号隔开
      • 匿名函数只能写一行
      • 返回值和正常的函数一样,可以是任意数据类型
  • sorted( )排序函数
    • 语法
      • sorted(iterable,key=None,reverse=Flase)
  •  lst = [1,2,3,4,5,9,4,8,6,7]
    print(sorted(lst)) #得到结果
    [1, 2, 3, 4, 4, 5, 6, 7, 8, 9]
    #没有key和reverse的值就是默认排序
      • iterable:可迭代对象
      • key:排序规则
      • reverse:是否是倒叙.True倒叙,False正序
  •  lst = [6,3,2,8,7,4,6,8,1,7,1,6,5,9,1,2]
    s = sorted(lst,reverse = True) #True为倒叙
    print(s) #结果
    [9, 8, 8, 7, 7, 6, 6, 6, 5, 4, 3, 2, 2, 1, 1, 1]
    • 运行流程:
      • 把可迭代对象中的每一个元素交给后面key函数来执行,得到一个数字(权重),通过这个数字进行排序.
  • filter( )过滤函数
    • 把可迭代对象中的每一个元素交给前面的函数进行筛选,函数返回Trun或者False
    • 语法:
      • filter(function,iterable)
  • map( )映射函数
    • 把可迭代对象中的数据交给前面的函数进行执行,返回值就是map的处理结果
    • 语法:
      • map(function,iterable)
  • 递归
    • 函数自己调用自己(递归深度:最大1000,但是到不了1000就停了)
  • 二分法
    • 必须是有序序列才可以使用二分查找,每次能够排除掉一半的数据,查找的效率高
    • 核心:
      • 掐头去尾取中间,一次砍一半
    • 算法
      • 常规循环
      • 递归循环
  •  lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]
    def func(n,left,right): #
    if left <= right:
    mid = (left + right)//2
    if n > lst[mid]:
    left = mid+1
    return func(n,left,right) #递归入口
    if n < lst[mid]:
    right = mid-1
    return func(n,left,right) #递归入口
    if n == lst[mid]:
    print('找到了!')
    return mid #通过return返回值,终止递归
    else:
    print('没有这个数~~')
    return -1
    ret = func(88,0,len(lst)-1)
    print(ret)
上一篇:Html页中使用OCX控件


下一篇:(09)odoo工作流