python脱产4期内容整理NO.16

今天主要讲三大部分内容:

一、匿名函数
二、函数递归与二分法
三、面向过程编程

一、匿名函数:

  1.什么是匿名函数

    相对于有名函数,用def func():命名,且能够被多次调用,匿名函数没有被命名且在                  定义时使用一次

  2.为何要用匿名函数

    匿名函数在定义时没用被命名,在调用之后就会被回收,无法再次使用,作用是当某一功                能仅使用一次就没有重复使用的必要时就应该使用匿名函数

  3.匿名函数的使用

    lambda x,y:x+y

    res=(lambda x,y:x+y)(1,2)

扫描二维码关注公众号,回复: 3519351 查看本文章

    print(res)

    max示范:

      salaries={

        ’egon‘:3000
        ’alex‘:100000
        ’wupeiqi‘:10000
      }
      print(max(salaries,key=lambda k:salaries[k]))

    max指定key以后的工作原理:

      1.把可迭代对象字典编程迭代器对象iter_obj
      2.next(iter_obj)得到一个人名,然后当做参数传值给key的函数,然后调用函数将返                            回值对应values做比较
                     3.比较大小后,取出最大值对应的人名

    sorted排序示范    

      salaries={

        ’egon‘:3000
        ’alex‘:100000
        ’wupeiqi‘:10000
      }

      print(sorted(salaries,key=lambda k: salaries[k]))从小到大

      print(sorted(salaries,key=lambda k:salaries[k],reverse=True))从大到小

      

    map示范

      name=['alex','wupeqi','yuanhao']

      res=map(lambda x:x+’dsb‘,names)

      print(res)

      print(list(res)) 

    reduce示范

      1-100以内加总数和

      print(reduce(lambda x,y:x+y ,[i for i in range(100)]))

    filter(过滤器)示范:

      names=['alex_dsb','wxx_sb','kevin_sb','egon']

      res=filter(lambda name:name.endswith('sb'),names)

      print(list(res))

二、函数递归与二分法

  1.什么是函数递归

    函数递归是函数嵌套调用的一种特殊形式
              是函数直接和间接的自我调用

    递归本身是一个循环的过程:

      每次递归必须遵循两个原则:

        1,递归一次后,问题的条件减少

        2.必须有一个明确结束递归的条件或者进入下一层的条件

                     每次递归必须要有两个阶段:

        1.回溯:一层一层的递归下去

        2.递推:在某一层触发结束条件,一层一层返回

  2.为何要用递归

    在某些循环情况下,递归要比while循环简洁、简单

  3.如何用递归

    list1=[1,[2,[3,[4,[5,[6,[7,[8[9,]]]]]]]]]

    def func(1):
      for item in l:
        if type (item) is list:
          func(item)
        else:
          print(item)
    func(list)

  4.二分法

    二分法是算法的一种,算法是如何高效的解决问题的思路的

    nums=[1,2,3,4,5,6,7,8,9]
              def binary_search(find_bun,num):
      print(nums)
      if len(nums)==0
        print('not exists')
        return

      mid_index=len(nums)//2  #功能
      if find_num>nums[mid_index]:#在右边
        nums==nums[mid_index+1:]#重新运行功能,传入新列表
        binary_search(find_num,nums)

      elif find_num<nums[mid_index]:#在左边
        nums=nums[:mid_index]:#重新运行功能,传入新列表
        binary_search(find_num,nums)

      else:

        print(’find it')
    binary_search(97,nums)

三、面向过程编程

面向过程编程:
    核心是过程二字,过程指的是解决问题的步骤,即先干什么再干什么后干什么...
    基于该思想编写程序脑子里应该始终思考过程二字,就好比在设计一条流水线,是一种
    机械式的思维方式
    优点:复杂的问题的流程化,进而简单化
    缺点:扩展性差

猜你喜欢

转载自www.cnblogs.com/wuzhengzheng/p/9768895.html