zoukankan      html  css  js  c++  java
  • python基础之Day15

    一、函数递归

    什么是函数递归:

      函数递归调用是一种特殊的嵌套调用,在调用一个函数的过程中,又直接或间接地调用了该函数本身。

    其中,函数的递归有明确的结束条件,不能无限制的调用,否则会撑破内存,在Python中限定递归最多调用1000层。

    1000层这个值是大概的数值,这个数值可以通过Python内置的功能进行更改。

    递归必须要有两个明确的阶段:

      递推:一层层递归调用下去,强调每次进入下一次递归,问题规模都在减小

      回溯:递归必须要有一个明确的结束条件,在满足该条件时结束递推,开始一层层回溯

      其中,递归的精髓在于通过不断的重复逼近一个最终结果。

    循环(while)能做的,递归都可以,为什么还要递归?

      因为相较于循环,递归无须确定循环次数,只需确定结束条件。

    举个例子,递归的应用:

    二分法:

    有个从小到大排列对的列表,判断某个值是否在里面。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    nums=[1,3,7,11,22,34,55,78,111,115,137,149,246,312]
    def search(search_num,nums):
        print(nums)
        if len(nums)==0:
            print('not exists')
            return
        mid_index=len(nums)//2
        if search_num>nums[mid_index]:
            nums=nums[mid_index+1:]
            search(search_num,nums)
        elif search_num<nums[mid_index]:
            nums=nums[:mid_index]
        else:
            print('find it')
    search(31,nums)

     二、匿名函数

    有名函数:基于函数名重复使用

    匿名函数:没有绑定名字的下场就是使用一次就被回收了。

    定义:

    lambda x,y: x+y

    其中冒号后面的值就相当于有名函数里的return 后面的值

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

    max 工作原理:

    1、首先将可迭代对象变成迭代器对象

    2、res=next(迭代器对象)将res当作参数传给key指定的函数,然后将该函数的返回值当成判断的依据。

    map的工作原理:

    1、首先将可迭代对象变成迭代器对象

    2、res=next(迭代器对象)将res当作参数传给第一参数指定的函数,然后将该函数的返回值当成结果之一

    filter工作原理:

    1、首先将可迭代对象变成迭代器对象

    2、res=next(迭代器对象)将res当作参数传给第一个参数指定的函数,然后filter会判断函数的返回值的真假,如果为真则留下res

    三、常用内置函数

    1、

    res='你好’.encode('utf-8')

    res=bytes('你好’,encoding='utf-8')

    2、

    参考ASCII码将数字转成对应的字符

    print(chr(65))      #'A'

    参考ASCII码将字符转成对应的数字

    print(ord('a'))      #97

    3、

    将两个数进行取模运算,得到商和余数

    print(divmod(10,3))      #(3, 1)

    4、

    l=['a','b','c']      #枚举
    for item in enumerate(l):
    print(item)

    5、

    l='[1,2,3]'      #将字符串中的东西拿出了执行一遍
    l1=eval(l)
    print(l1,type(l1))
    print(l1[0])

    6、

    print(round(3.3))  #四舍五入

    7、

    print(sum(range(101)))  #求和

    8、

    将字符串变成模块名

    module=input('请输入你要导入的模块名>>: ').strip() #module='asdfsadf'
    m=__import__(module)
    print(m.time())

  • 相关阅读:
    前辈的经验
    ES6 的新特性
    jQuery 事件对象的属性和方法
    ECMAScript 6 入门
    浏览器的加载与页面性能优化
    ajax 基于 jquery 简单的 ajax 请求
    浏览器加载、解析、渲染的过程
    浏览器的加载和解析的过程,以及如何加快 HTML 的加载速度
    【经典问题】当你输入一个网址的时候,实际会发生什么?
    总结 IE 下的一些 BUG
  • 原文地址:https://www.cnblogs.com/chicokiko/p/9202747.html
Copyright © 2011-2022 走看看