• Python_迭代器-生成器-复习-习题_41


    # 迭代器和生成器
    # 迭代器
    # 可迭代协议 —— 含有iter方法的都是可迭代的
    # 迭代器协议 —— 含有next和iter的都是迭代器
    # 特点
    # 节省内存空间
    # 方便逐个取值,一个迭代器只能取一次。

    # 生成器 —— 迭代器
    # 生成器函数
    # 含有yield关键字的函数都是生成器函数
    # 生成器函数的特点
    #调用之后函数内的代码不执行,返回生成器
    #每从生成器中取一个值就会执行一段代码,遇见yield就停止。
    #如何从生成器中取值:
    # for :如果没有break会一直取直到取完
    # next :每次只取一个
    # send :不能用在第一个,取下一个值的时候给上个位置传一个新的值
    # 数据类型强制转换 :会一次性把所有数据都读到内存里
    # 生成器表达式
    # (条件成立想放在生成器中的值 for i in 可迭代的 if 条件)



    习题:
    # 3.处理文件,用户指定要查找的文件和内容,将文件中包含要查找内容的每一行都输出到屏幕
    
    def check_file(filename,aim):
        with open(filename,encoding='utf-8') as f:   #句柄 : handler,文件操作符,文件句柄
            for i in f:
                if aim in i:
                    yield i
    
    g = check_file('1.复习.py','生成器')
    for i in g:
        print(i.strip())
    # 4.写生成器,从文件中读取内容,在每一次读取到的内容之前加上‘***’之后再返回给用户。
    
    def check_file(filename):
        with open(filename,encoding='utf-8') as f:   #句柄 : handler,文件操作符,文件句柄
            for i in f:
                yield '***'+i
    
    for i in check_file('1.复习.py'):
        print(i.strip())


    2:
    def check_file(filename,aim):
    with open(filename,encoding='utf-8') as f: #句柄 : handler,文件操作符,文件句柄
    for i in f:
    if aim in i:
    yield i

    g = check_file('1.复习.py','生成器')
    for i in g:
    print("***", i.strip())



    3:
    def check_file(filename, aim):
    with open(filename, encoding='utf-8') as f: # 句柄 : handler,文件操作符,文件句柄
    for i in f:
    if aim in i:
    yield i


    g = check_file('1.复习.py', '生成器')
    for i in g:
    print("***%s"%i.strip())
  • 相关阅读:
    EF 事务
    关于C#如何将Word转换成PDF的方法汇总
    莫德纳公司
    C# 填充pdf 模板生成报告
    自定义滚动条的样式
    Docker 大势已去,Podman 即将崛起……
    一款基于 Spring Boot 开发的 OA 项目,已开源,真香..
    当你运行npm run命令时,会发生什么?
    Java遇上SPL:架构优势和开发效率,一个不放过
    如何使用Python实现图像融合及加法运算?
  • 原文地址:https://www.cnblogs.com/LXL616/p/10680827.html
Copyright © 2020-2023  润新知