• Python全栈之路Day23


    初次编辑2017年10月29日,星期日

    摘要

    引用:百度

    1. 内置函数
    2. 匿名函数

    一. 上节课复习

    1. 声明式编程
      1. 列表解析
      2. 生成器表达式

    二.内置函数

    1. 常见内置函数
    print(abs(-1))    #取绝对值
    print(all(iterable ))    #可迭代参数 iterable 中的所有元素是否不为 0、''、False 或者 iterable 为空,如果是返回 True,否则返回 False;注意:空元组、空列表返回值为True
    print(any(iterable ))    #可迭代参数 iterable 是否全部为空对象,如果都为空、0、false,则返回 False,如果不都为空、0、false,则返回 True;注意:空元组、空列表返回值为False
    print(bin(X))    #一个整数 int 或者长整数 long int 转换成二进制
    print(bytes('hello',encoding='utf-8'))    #将字符串转换成字节形式,可指定字符编码
    print(callable(sum))    #检测一个对象是否可以被调用
    print(chr(65))    #返回ASCII码对应字符
    print(ord('A'))    #返回ASCII码对应的数字
    complex()    #创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数
    dir()    #不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表
    divmod()    #把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)
    enumerate()        #同时列出数据和数据下标,一般用在 for 循环当中
    hash()    #获取取一个对象(字符串或者数值等)的哈希值,一般用于校验,哈希值不能逆推
    hex()    #十进制转十六进制
    id()    #可以返回一个对象的身份,返回值为整数
    1. max和min函数
    #max 和 min
    salaries={
        'egon':3000,
        'alex':100000000,
        'wupeiqi':10000,
        'yuanhao':2000
    }
    
    def get_value(key):
        return salaries[key]
    
    print(max(salaries))        #max进行比较时,默认按照字典的key去比较,得到的返回值也是字典的key
    print(max(salaries,key = get_value))
    #max会将前面的可迭代对象变成生成器,每次next,将返回值传给后面的参数get_value;
    #函数get_value返回key对应的值,赋值给key,然后会按照key进行比较
    1. 数据类型
    #数据类型
    int
    num = 1        #num = int(1)
    print(type(num))    #查看num的类型    <class 'int'>
    print(isinstance(num,int))        #判断num是否为int类型        True
    print(num is 1)        #is 是身份运算,根据id去判断身份    True
    
    str
    list
    x = []
    x = list(i for i in rang(10))
    tuple
    
    dict
    d = {'a':1 }
    d = dict(a=1)        #工厂函数,等价于上面
    
    set
    frozenset    #不可变集合
    1. zip函数(拉链)
      • 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
        如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
    a = [1,2,3]
    b = [4,5,6]
    c = [4,5,6,7,8]
    zipped = zip(a,b)    # zipped 为迭代器
    for i in zipped:
        print(i)
    # (1, 4)
    # (2, 5)
    # (3, 6)
    # 注意zip中对象的前后顺序
    1. sorted
    #sorted基本应用
    l=[3,4,1,0,9,8]        #[0, 1, 3, 4, 8, 9]
    print(sorted(l))    #返回值是列表,默认是升序    [9, 8, 4, 3, 1, 0]
    print(sorted(l,reverse=True))    #降序排列
    
    s='hello world'
    print(sorted(s))
    #[' ', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
    #sorted与字典
    salaries={
        'egon':3000,
        'alex':100000000,
        'wupeiqi':10000,
        'yuanhao':2000
    }
    
    print(sorted(salaries))        #默认是按照字典salaries的key去排序 ['alex', 'egon', 'wupeiqi', 'yuanhao']
    print(sorted(salaries,key=lambda k:salaries[k]))    ['yuanhao', 'egon', 'wupeiqi', 'alex']
    1. map函数:映射
      • 根据提供的函数对指定序列做映射。
        第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
    l=[1,3,5,2,0]
    m=map(lambda k:k**2,l)        #map是个迭代器
    print(list(m))        #[1, 9, 25, 4, 0]
    
    name_l=['alex','zhejiangF4','wupeiqi','yuanhao']
    m=map(lambda name:name+'SB',name_l)
    print(list(m))        #['alexSB', 'zhejiangF4SB', 'wupeiqiSB', 'yuanhaoSB']
    1. reduce函数:合并
      • 会对参数序列中元素进行累积,用传给reduce中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果
    #reduce
    
    from functools import reduce
    l=list(range(100))    #生成一个1到100的列表
    print(reduce(lambda x,y:x+y,l))        #reduce 还有默认参数 用法不是很理解
    1. filter函数:过滤
      • 序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中
    #filter
    
    name_l=[
        {'name':'egon','age':18},
        {'name':'alex','age':1000},
        {'name':'wupeiqi','age':2000}
    ]
    
    f=filter(lambda d:d['age']>100,name_l)
    for i in f:
        print(i)
    1. 其他
    oct()    #十进制转八进制
    
    pow(x,y,z)    #返回 xy(x的y次方)的值,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z
    reversed()    #返回一个反转的迭代器,不修改原对象
    round()        #返回浮点数x的四舍五入值 注意:四舍六入五留双
    #slice
    slice()        #切片
    l=[1,2,3,4]
    print(l[1:3])
    
    s=slice(1,3)
    print(l[s])
    #vars
    vars()    #没有参数,就打印当前调用位置的属性和属性值 类似 locals()
    # __import__()
    import time
    print(time)
    
    m=__import__('time')        #通过字符串导入模块,等于上方
    print(m)
    1. 需了解
      • 字节码
      • 虚数、复数
      • 工厂函数
    compile()
    eval()
    exec()

    三.匿名函数

    1. 匿名函数
    #匿名函数
    lambda key:salaries[key]
    #等同于
    def get_value(key):
        return salaries[key]
    
    # 上面的max函数可以用匿名函数实现(与字典)
    print(max(salaries, key=lambda key:salaries[key]))

    作业

    今日总结

    <wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

  • 相关阅读:
    mysql 高效分页控件及c#调用实例
    sql server高效分页控件及c#调用实例
    Log4net从下载到使用例子
    Nlog从下载到使用例子
    使用httpClient调用接口,参数用map封装或者使用JSON参数,并转换返回结果
    Pool thread stack traces: Thread[C3P0PooledConnectionPoolManager[identityToken->原因解决办法
    使用spring的aop监听所有controller或者action日志
    ActiveMQ监听消息并进行转发,监听不同的mq服务器和不同的队列
    zookeeper集群查看状态时报错Error contacting service. It is probably not running的一些坑以及解决办法
    AopProxyUtils.getSingletonTarget(Ljava/lang/Object;)Ljava/lang/Object;大坑
  • 原文地址:https://www.cnblogs.com/sama/p/7825415.html
Copyright © 2020-2023  润新知