zoukankan      html  css  js  c++  java
  • day 15 内置函数二 递归 lamda sorted filter map 二分法求值

    回顾

      for i in dict  #对字典进行遍历,拿到的是字典的key


     今日主要内容
    1. lambda 匿名函数
      语法:
        lambda 参数:返回值
        不能完成复杂的操作、只能写一行

       注意:

          1 函数的参数可以是多个,返回值的计算方法只能是一个(可以包含多个参数的计算)

          2. 匿名函数并不是没有名字,而是通过__name__查看的时候没有名字,所有统一都叫       lambda

          3.参数就是函数的参数,接收变量使用的

    2. sorted() 函数      排序

      sorted(iterable, key =None ,reverse=false)

      sorted(可迭代对象,key = None,reverse= False)

    lst = [1,3,23,6,4,34,23,12,9]
    lst.sort()   #sort是list里面的一个方法
    print(lst)
    sorted(lst)   #内置函数,返回给你一个新列表,新列表是被排序的。 (与dic.frokeys())效果一样,  
    print(lst)
    

      排序.

        1. 可迭代对象
        2. key=函数. 排序规则
        3. reverse. 是否倒序

      原理:在sorted内部会将可迭代对象中的每一个元素传递给这个函数key的参数,根据函数的运算结果进行排序。 例如:可以进行列表中字符串的长度排序

    dic = {1:'a',23:'s',2:'g'}
    print(sorted(dic))   #如果排序是字典,则返回排序过来后的key。结果是一个列表
    

    3. filter() 函数      过滤

      filter(function,iterable)   处理完后是一个迭代器

      原理:把可迭代对象中的每一个元素传递给function,然后根据function返回的True或者False来判断是否保留此数据


        1. 函数, 返回True或False
        2. 可迭代对象

    4. map()  映射函数

        map(function,iterable)   处理完是一个迭代器

      原理:可以对迭代器对象中的每一个元素进行映射,然后分别执行function
        1. 函数
        2. 可迭代对象

    计算两个列表中相同位置的数据之和
    lst1 = [1,3,2,5,4]
    lst2 = [6,3,2,5]
    print(list(map(lambda x,y:x+y,lst1,lst2)))
    
    print(list(map(lambda x: x * x, [1, 2, 3, 4, 5])))
    

    5. 递归
        自己调用自己.
          def func():
            func()
          func()

        用途: 遍历树形结构。比如 我们的文件操作系统
        难点:不好想.需要找规律. 不好读

    遍历树形结构
    import  os    引进操作系统
    filePath = "d:sylarpython_workspace"
    def read(filePath, n):
        it = os.listdir(filePath)   # 打开文件夹
        for el in it:
            #  拿到路径
            fp = os.path.join(filePath, el) # 获取到绝对路径
            if os.path.isdir(fp):   # 判断是否是文件夹
                print("	"*n,el)
                read(fp, n+1)    # 又是文件夹. 继续读取内部的内容 递归入口
            else:
                print("	"*n,el)    # 递归出口
    read(filePath, 0)
    

    6. 二分法
      掐头结尾取中间. 不停的改变左和右. 间接改变中间.

      查询效率非常高、但局限性比较大,必须是有序序列才可以使用二分查找

    sorted 返回的是列表,可以直接打印

    fiflter 、map  返回的可迭代对象,必须用list()接这个可迭代对象    

  • 相关阅读:
    sql count中加条件
    zero-copy总结
    问题诊断神器arthas
    rabbitmq 消息确认
    HttpRunner安装笔记(1)安装环境准备:pyenv安装
    centos7 安装rabbitmq3.4.1-1
    centos7 python2.7.5 升级python3.6.4
    测试面试必会sql(1)
    mysql5.6 无法远程连接问题解决
    Katalon 学习笔记(一)
  • 原文地址:https://www.cnblogs.com/xiaobai686/p/11667995.html
Copyright © 2011-2022 走看看