zoukankan      html  css  js  c++  java
  • python day15

    生成器send方法

    #send的工作原理

      --1、给当前停止位置的yield传入参数

      --2、再去调用__next__()方法找到找下一个yield,返回yield的值并且停住

    def fn():

      a = yield 1

      b = yield 2

      yield 3

    fn().__next__()    #直接去找yield并且返回yield的值

    fn().send()      #先给当前yield传值(被赋值给了a),再和next方法一样去找下一个yield并且返回yield值

    递归

    递归:函数直接或者间接调用自己都成为递归

    #递归主要分为两个部分

    #回溯:去寻找答案的过程,终究有一个出口,如果没有出口就是死循环(终究会撑爆内存,所以限制了最大循环次数)

    #递推:通过出口返回的答案,再一层一层返回来,得到最初想要的结果(有一定的规律才能返回递推回来)

    所以递推有两个前提:

      --1、递归必须要有出口

      --2、递归回溯递推的条件一定要有规律

    #案例:阶乘
    def fac(num):       #num的阶乘就是num乘以(num-1)的阶乘
        if num == 1:
            return 1    #出口是 1 的阶乘是 1
        return fac(num - 1) * num
    print(fac(5))       #求的是5的阶乘   结果是120

    匿名函数

    正常函数结构:

    def fn():

      #函数体

      #return返回值

    匿名函数

    -1、没有函数名

    -2、匿名函数关键字采用lambda

    -3、关键字和表示函数功能体 :之间都是参数,所以去除()

    -4、匿名函数没有函数体,只有返回值(所以不能写代码块,只能对返回值做些操作),省略了return

    lambda 参数:'返回值'

    #注意:

      1、参数的使用和有名函数一样,六种参数都支持

      2、返回值必须明确成为一个值,也可以是一个容器对象

    #反例:

    a = lambda *args,**kwargs:'返回值1','返回值2'

    print(a)  ==>得到的是一个(函数地址,返回值2)   他不会把返回值1和返回值2当成一个整体,需要自己加括号表明

    max结合匿名函数工作原理

    max(iter,key = lambda x : x)

    1、max内部会遍历iter,将得到值传给lambda匿名函数

    2、依据lambda返回值作为比较条件,得到最大条件下的那个遍历值

    3、对外返回最大遍历的值

    min()的工作原理和max的工作原理一样,得到比较条件最小的那一个遍历值

    常用的内置函数

    内置函数连接:https://docs.python.org/zh-cn/3.7/library/functions.html#built-in-functions

    map(匿名函数,iterable)

    map(lambda x : x*2 , [1,4,3])  #将便利出来的结果传入匿名函数,再根据返回值得到映射的结果

                      映射结果可以映射成任何类型

    reduce

    from functools import reduce

    a = reduce(lambda x,y : x*y,[3,5,2,4]) 

      1、先传两个值3、5进去得到的返回值是15

      2、再把15和之后遍历的2一起传进去得到的返回值是30

      3、再把30和之后遍历的4一起传进去得到的返回值是120

    #所以a最终的值是120

    sorted(iter,fn,reverse)

    dic = {'owen':(19,39900),'kevin':(23,4543)}

    res = sorted(dic,key = lambda x :dic[x][1])  # ['kevin','owen']  遍历的是key   排序的条件是把key传到

                        匿名函数中的到的返回值 reverse默认值是Fause 

    res = sorted(dic,key = lambda x :dic[x][1],reverse = True)    #['owen','kevin']  #当reverse改为True的时候

                                           得到列表就反转

    ------

    1、与类型相关的

    int()、float()、str()、bool()、list()、dict()、set()、tuple().......

    ord()字符串转换成ascii码的十进制、chr()ascii的十进制转换成字符

    2、进制转换

    print(bin(10))  1010  十进制转换成二进制

    print(oct(10))  12    十进制转换成八进制

    print(hex(10))  a     十进制转换成十六进制

    print(0b111)  7

    print(0o11)    9      转回来

    print(0x11)   17

    3、常用的操作类型

    range()、len()、iter()、next()、enumerate()、id()、type()、print()、input()、open()

    4、原义字符串

    print(r'a b')    #可以让 转义符不转义

    5、数学运算相关

    abs()取绝对值、sum()求和、max()求最大值、min()求最小值、pow()里面两个参数是幂,三个参数的话前两个是幂第三个对他们取余、sorted()排序

    print(pow(3,2))  3**2  9

    print(pow(3,2,4))  3**2%4  1

  • 相关阅读:
    macbook使用美化工具在屏幕展示出常查信息
    Mac 下 Docker 运行较慢的原因分析及个人见解
    Json Web Token
    Mac开发环境部署
    python3.6_多进程_multiprocessing.pool_concurrent.futures_ProcessPoolExecutor_对比
    apache2_nginx_反向代理设置_https_不验证后端证书_只允许访问首页
    awstats_yum_dnf_centos8_nginx_X-Forwarded-For
    Django_uwsgi_nginx_centos_笔记
    python3_pandas.HDFStore_h5py_HDF5_的笔记
    echarts_highcharts_笔记_风向箭头
  • 原文地址:https://www.cnblogs.com/hesujian/p/10796970.html
Copyright © 2011-2022 走看看