zoukankan      html  css  js  c++  java
  • 内置函数2 递归

    lambda 匿名函数

      语法 lambda 参数;返回值

    a = lambda n : n * n 
    print(a)
     
    #n = 2
    #4
    s = lambda x,y:x,y
    print(s) 
    #这个会报错,默认认为  x,y:x  是一对元组,y  没有传值,会报错
    
    s = lambda x,y:(x,y)
    print(s) 
    #用括号括起来说明这是一个整体,就ok

    sorted()  排序函数

      内置函数中提供了一个通用的排序方案

      

    lst = ["聊斋", "西游记", "三国演义", "葫芦娃", "水浒传", "年轮", "亮剑"]
    def func():
        ruturn len(lst) % 2
    li = sorted(lst,key = func)
    print(li)
    # 聊斋 三国演义 年轮 亮剑 西游记 葫芦娃 水浒传
    lst = [
        {'name':"汪峰","age":48},
        {"name":"章子怡",'age':38},
        {"name":"alex","age":39},
        {"name":"wusir","age":32},
        {"name":"赵一宁","age":28}
        ]
    li = dorted(lst,key = lambda el : len(el['name']))
    print(li)
    #{'name': 'wusir', 'age': 32}, {'name': 'alex', 'age': 39},
    # {'name': '章子怡', 'age': 38},
    # {'name': '赵一宁', 'age': 28}, {'name': '汪峰', 'age': 48}]

    filter()   筛选函数

      

    lst = [
        {"name":"汪峰", "score":48},
        {"name":"章子怡", "score":39},
        {"name":"赵一宁","score":97},
        {"name":"石可心","score":90}
    ]
    f = filter(lambda el : el['score'] < 60,lst)
    print(list(f))

    map

      一句话,分而治之

    map (func1,map(func2,map(func3,map)))

    递归

      递归函数有最大的深度是 1000,实际到 998 左右就会报错

      可以调整最大的深度,import sys        但是不建议这样做

    二分法

      一句话 掐头去尾取中间

      二分法使用场景   有序序列

      

    lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 ]
    n - 66
    left = 0
    right = len(lst) - 1     #获取索引 索引从0 开始
    while left <= right:    #边界,当右边的比左边还小的适合退出循环
        mid = (left + right)//2     #必须整除,索引没有小数
        if lst[mid] > n:
            right = mid - 1
        if lst[mid] < n:
            left = mid + 1
        if lst[mid] == n:
            print('找到了')
    else:
        print('没有这个数')

    递归来完成二分法

    lst = [22, 33, 44, 55, 66, 77, 88, 99, 101 , 238 , 345 , 456 , 567 , 678 , 789]
    def func(n,left,right):
        if left <= right:
            print('哈哈')
            mid = (left + right)// 2
            if n > lst[mid]:
                left = mid + 1
                return func(n,left,right)
            if n <lst[mid]:
                right = right + 1
                return func(n,left,right)
            if n ==lst[mid]:
                print('找到了')
                return mid
        else:
            prinit('没有这个数')
            return -1
    
    ret = func(66,0,len(lst) - 1)
    print(ret)

      

  • 相关阅读:
    uwsgi 的启动停止重启
    项目部署(Python3 + ubuntu 16.04(ali server) + Nginx + uWSGI + Django 1.11)
    阿里云连接上Mysql数据库(10061 errors)
    本地数据库上传到阿里云Mysql
    Django 用户的修改密码接口
    django 的忘记密码接口
    Git光速入门
    缓存问题:一致性、穿击、穿透、雪崩、污染
    redis进阶-高可用:主从复制详解
    Redis分片技术(Redis Cluster)
  • 原文地址:https://www.cnblogs.com/lzqrkn/p/9482310.html
Copyright © 2011-2022 走看看