zoukankan      html  css  js  c++  java
  • python 12 生成器

    1. 生成器 yeild

    生成器的本质就是一个迭代器
    迭代器和生成器的区别: 迭代器是Python中内置的一种节省空间的工具,是python自带的;生成器是程序员自己写的。
    
    def func():
        if 3>2:
            yield "你好"  # 停止,会记录执行到的位置
        if 4>2:
            yield "我好"
        yield "大家好"
    g = func()  	# 产生一个生成器
    print(g.__next__())
    print(g.__next__())
    print(g.__next__())    # 可写成  print(next(g))
    
    # 可循环打印
    for i in g:
        print(i)
    
    定义一个生成器:
        基于函数,
        函数体中存在yield就是一个生成器
        函数名() 就产生一个生成器
    
    生成器:
        节省空间 -- 惰性机制
        不能逆行
        一次性
        一个next对应一个yield  可以多写yiled,返回多次
    
    #生成器应用场景:
    def func():
        lst = [1,3,5,7,9]
        yield from lst   # from 将一个可迭代对象的元素逐个返回
    g = func()
    for i in g:
        print(i)   # 1 3 5 7 9
        
    def func():
        lst = [1,2,3,4,5,6,7,8,9]
        yield from lst
        count = 9
        while count:
            yield count  # yield能够临时停止for、while循环
            count -= 1
    g = func()
    for i in g:
        print(i)
    

    2. 推导式

    2.1 列表推导式:

    #[变量(加工后的变量) for循环 加工方式]
    print([i for i in range(20) if i%2 ==0])
    

    2.2 生成器推导式:

    # (变量(加工后的变量) for循环 加工条件)
    g = (i for i in range(50) if i % 2 == 1)
    for i in g:
        print(i)
    

    2.3 字典推导式:

    # {键:值 for循环 加工条件}
    print({i:i+1 for i in range(10) if i % 2 == 0})
    

    2.4 集合推导式:

    # {变量(加工后的变量) for循环 加工条件}
    print({i for i in range(10) if i % 2 == 0})
    

    3. 内置函数(一)

    eval():执行字符串类型的代码,并返回最终结果
    exec():执行字符串类型的代码
        
    s = """
    for i in range(10):
        print(i)
    """    
    print(exec(s))   # 循环打印
    
    hash():获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。
    help():函数用于查看函数或模块用途的详细说明。
    callable():函数用于检查一个对象是否是可调用的。
    int:函数用于将一个字符串或数字转换为整型。
    float:函数用于将整数和字符串转换成浮点数。
    complex():函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数.
    bin:将十进制转换成二进制并返回。
    oct:将十进制转化成八进制字符串并返回。
    hex:将十进制转化成十六进制字符串并返回。
    divmod():计算除数与被除数的结果,返回一个包含商和余数的元组 (a // b, a % b)。
    round(5.323,2):保留浮点数的小数位数,默认保留整数。
    pow():求x**y次幂。(三个参数为x**y的结果对z取余)
    bytes:用于不同编码之间的转化。
    ord():输入字符找当前字符编码的位置
    chr:输入当前编码的位置数字找出其对应的字符
    repr:返回一个对象的string形式(原形毕露)。
    all:可迭代对象中,全都是True才是True
    any:可迭代对象中,有一个True 就是True
    globals():查看全局空间的变量,以字典形式体现
    local():查看当前空间的变量
    
  • 相关阅读:
    delphi 数据导出到word
    use vue vuex vue-router, not use webpack
    样式化加载失败的图片
    HTML5 这些你全知道吗?
    移动端touch实现下拉刷新
    参与前端开源项目你应该了解的知识
    JavaScript 深浅拷贝
    精通移动端布局
    JavaScript模块
    两层Fragment嵌套,外层Fragment切换时内层Fragment不显示内容
  • 原文地址:https://www.cnblogs.com/yzm1017/p/11215992.html
Copyright © 2011-2022 走看看