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

  • lambda匿名函数(函数名统一都叫lambda)
    • 为了解决简单的需求而设计的一句话函数
    • 语法:
      • lambda 参数 返回值
  • 1 n = lambda a,b: max(a,b)  
    2 ret = n(9,4)
    3 print(ret)
    • 注意:
      • 函数的参数可以有多个,多个参数之间用逗号隔开
      • 匿名函数只能写一行
      • 返回值和正常的函数一样,可以是任意数据类型
  • sorted( )排序函数
    • 语法
      • sorted(iterable,key=None,reverse=Flase)
  • 1 lst = [1,2,3,4,5,9,4,8,6,7]
    2 print(sorted(lst))
    3 
    4 #得到结果
    5 [1, 2, 3, 4, 4, 5, 6, 7, 8, 9]
    6 #没有key和reverse的值就是默认排序
      • iterable:可迭代对象
      • key:排序规则
      • reverse:是否是倒叙.True倒叙,False正序
  • 1 lst = [6,3,2,8,7,4,6,8,1,7,1,6,5,9,1,2]
    2 s = sorted(lst,reverse = True)  #True为倒叙
    3 print(s)
    4 
    5 #结果
    6 [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就停了)
  • 二分法
    • 必须是有序序列才可以使用二分查找,每次能够排除掉一半的数据,查找的效率高
    • 核心:
      • 掐头去尾取中间,一次砍一半
    • 算法
      • 常规循环
      • 递归循环
  •  1 lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]
     2 def func(n,left,right):   #
     3     if left <= right:
     4         mid = (left + right)//2
     5         if n > lst[mid]:
     6             left = mid+1
     7             return func(n,left,right)   #递归入口
     8         if n < lst[mid]:
     9             right = mid-1
    10             return func(n,left,right)   #递归入口
    11         if n == lst[mid]:
    12             print('找到了!')
    13             return mid          #通过return返回值,终止递归
    14     else:
    15         print('没有这个数~~')
    16         return -1
    17 ret = func(88,0,len(lst)-1)
    18 print(ret)        
原文地址:https://www.cnblogs.com/mixw/p/9481785.html