zoukankan      html  css  js  c++  java
  • python第五天


    递归
    --1 递归调用的定义
    #递归调用是函数嵌套调用的一种特殊形式,函数在调用时,直接或间接调用了自身,就是递归调用
    --2 递归分为两个阶段:递推,回溯
    def salary(n):
    if n == 1:
    return 100
    return salary(n-1)+300

    print(salary(5))
    --3 python中的递归效率低且没有尾递归优化
    --4 可以修改递归最大深度
    import sys
    sys.getrecursionlimit()
    sys.setrecursionlimit(2000)
    虽然可以设置,但是因为不是尾递归,仍然要保存栈,内存大小一定,不可能无限递归
    ----------------------------------------------------------------------------------------
    #总结递归的使用:
    1. 必须有一个明确的结束条件
    2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少
    3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,
    每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)
    -----------------------------------------------------------------------------------------

    二分法
    --想从一个按照从小到大排列的数字列表中找到指定的数字,遍历的效率太低,用二分法(算法的一种,算法是解决问题的方法)可以极大低缩小问题规模

    l=[1,2,10,30,33,99,101,200,301,402] #从小到大排列的数字列表
    def search(num,l):
    print(l)
    if len(l) > 0:
    mid=len(l)//2
    if num > l[mid]:
    #in the right
    l=l[mid+1:]
    elif num < l[mid]:
    #in the left
    l=l[:mid]
    else:
    print('find it')
    return
    search(num,l)
    else:
    #如果值不存在,则列表切为空
    print('not exists')
    return
    search(100,l)

    实现类似于in的效果

    匿名函数
    --什么是匿名函数?
    匿名就是没有名字
    def func(x,y,z=1):
    return x+y+z
    匿名
    lambda x,y,z=1:x+y+z #与函数有相同的作用域,但是匿名意味着引用计数为0,使用一次就释放,除非让其有名字
    func=lambda x,y,z=1:x+y+z
    func(1,2,3)
    #让其有名字就没有意义
    --有名字的函数与匿名函数的对比
    #有名函数与匿名函数的对比
    有名函数:循环使用,保存了名字,通过名字就可以重复引用函数功能
    匿名函数:一次性使用,随时随时定义
    应用:max,min,sorted,map,reduce,filter

    内置函数
    #注意:内置函数id()可以返回一个对象的身份,返回值为整数。这个整数通常对应与该对象在内存中的位置,但这与python的具体实现有关,
    不应该作为对身份的定义,即不够精准,最精准的还是以内存地址为准。is运算符用于比较两个对象的身份,等号比较两个对象的值,
    内置函数type()则返回一个对象的类型
    #更多内置函数:https://docs.python.org/3/library/functions.html?highlight=built#ascii

  • 相关阅读:
    安卓长按应用图标弹出快捷方式(shortcut)
    网站主题变暗黑,快速解决
    android 11适配的其他注意点
    vue cli3.0构建多页面应用
    Alibaba Canal config 漏洞验证
    检测magiskhide
    Flutter垃圾回收器
    UIbutton 在动画过程中也能响应事件,主要利用layer的hitTest方法
    CocoaPods 私有化
    Android WorkManager使用入门
  • 原文地址:https://www.cnblogs.com/wdee/p/7701418.html
Copyright © 2011-2022 走看看