码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python基础之生成器


    (一)什么是生成器

    在python中,想要了解什么是生成器(generator),首先就需要了解什么是yield关键字。yield表达式只能函数内部或者lambda函数中使用,使用了yield表达式的函数即为生成器函数,而生成器函数返回的可迭代对象即为生成器,生成器的本质就是迭代器。

    (二)如何创建生成器

    了解了什么是生成器,那么创建生成器就简单了,下面是一个创建生成器的简单示例。

    def genexp(num):
        for i in range(num):
            yield i
            
    gens = genexp(5)
    # gens: 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    以上示例是用于生成数字1~5的生成器,可以看到genexp函数返回的对象类型就是generator。

    (三)如何循环遍历生成器

    1,for循环遍历

    gens = genexp(5)
    for gs in gens:
    	print(gs)
    # gs: 0 1 2 3 4
    
    • 1
    • 2
    • 3
    • 4

    2,转换为列表for循环遍历(生成器转换为列表可获取索引)

    gens = list(genexp(5))
    # 
    for gs in gens:
    	print(gs)
    # gs: 0 1 2 3 4
    for i, gs in enumerate(gens):
    	print(i, gs)
    # i: 0 1 2 3 4
    # gs: 0 1 2 3 4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    3,使用next函数循环遍历

    while True:
    	try:
    	    gs = next(gens)
    	    print(gs)
    	except:
    	    break
    # gs: 0 1 2 3 4 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    4,使用__next__方法循环遍历

    while True:
    	try:
    	    gs = gens.__next__()
    	    print(gs)
    	except:
    	    break
    # gs: 0 1 2 3 4
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    rust学习Cell、RefCell、OnceCell
    随机过程理论知识(一)
    JavaEE进阶 - Spring Boot 日志文件 - 细节狂魔
    不充不行(同时跑三辆车)
    SpringBoot 上传图片-指定目录按照日期存储
    基于JavaSwing开发聊天系统设计(群聊+服务器+客户端+MYSQL数据库) 毕业设计
    课程:如何高效掌控你的时间
    map、set(底层结构)——C++
    EVPN VXLAN报文交互
    VS2010 Windows API 串口编程 (二)
  • 原文地址:https://blog.csdn.net/m0_47026232/article/details/133436211
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号