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()接这个可迭代对象    

原文地址:https://www.cnblogs.com/xiaobai686/p/11667995.html