首页 > 编程语言 >超详细Python教程——迭代器和生成器

超详细Python教程——迭代器和生成器

时间:2024-07-12 22:31:49浏览次数:11  
标签:__ 迭代 Python self 生成器 num avg

迭代器和生成器

  • 迭代器是实现了迭代器协议的对象。

    • Python中没有像protocolinterface这样的定义协议的关键字。
    • Python中用魔术方法表示协议。
    • __iter____next__魔术方法就是迭代器协议。
    class Fib(object):
        """迭代器"""
        
        def __init__(self, num):
            self.num = num
            self.a, self.b = 0, 1
            self.idx = 0
       
        def __iter__(self):
            return self
    
        def __next__(self):
            if self.idx < self.num:
                self.a, self.b = self.b, self.a + self.b
                self.idx += 1
                return self.a
            raise StopIteration()
    
  • 生成器是语法简化版的迭代器。

    def fib(num):
        """生成器"""
        a, b = 0, 1
        for _ in range(num):
            a, b = b, a + b
            yield a
    
  • 生成器进化为协程。

    生成器对象可以使用send()方法发送数据,发送的数据会成为生成器函数中通过yield表达式获得的值。这样,生成器就可以作为协程使用,协程简单的说就是可以相互协作的子程序。

    def calc_avg():
        """流式计算平均值"""
        total, counter = 0, 0
        avg_value = None
        while True:
            value = yield avg_value
            total, counter = total + value, counter + 1
            avg_value = total / counter
    
    
    gen = calc_avg()
    next(gen)
    print(gen.send(10))
    print(gen.send(20))
    print(gen.send(30))
    

标签:__,迭代,Python,self,生成器,num,avg
From: https://blog.csdn.net/abcd51685168/article/details/140255589

相关文章

  • [SUCTF 2019]Pythonginx 1
    目录题目代码分析urlsplit()nginx文件位置解题题目代码分析fromflaskimportFlask,Blueprint,request,Response,escape,render_templatefromurllib.parseimporturlsplit,urlunsplit,unquotefromurllibimportparseimporturllib.requestapp=......
  • python————集合干货
    1.集合的定义python中的集合是一种无序的,元素不重复的数据结构。定义集合的方式:方式一:        #方式一不可以定义空集合s0={1,2,3,4}print(s0,type(s0))方式二:#方式二s1=set()print(s1,type(s1))s2=set(range(10))print(s0,type(s0))2.集合的......
  • python的视频处理实操宝典
    前言Python视频去抖动是指利用Python编程语言和相关的图像处理库,对视频中由于相机震动或手持拍摄等原因而导致的画面抖动进行处理的技术。视频去抖动的目的是使得视频画面更加稳定,减少抖动,提高观看体验。通常,视频去抖动的实现可以采用多种方法,包括基于帧差的方法、运动估......
  • python:使用matplotlib库绘制图像(四)
    作者是跟着http://t.csdnimg.cn/4fVW0学习的,matplotlib系列文章是http://t.csdnimg.cn/4fVW0的自己学习过程中整理的详细说明版本,对小白更友好哦!四、条形图1.一个数据样本的条形图条形图:常用于比较不同类别的数量或值,以及进行简单的数据分析。直方图:常用于分析数据的集中趋......
  • 基于python+爬虫实现招聘职位数据分析[源码+LW+部署讲解视频]
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • BS-Python-061 基于Python+Django实现在线考试系统
    作者主页:编程千纸鹤作者简介:Java、前端、Python开发多年,做过高程,项目经理,架构师主要内容:Java项目开发、Python项目开发、大学数据和AI项目开发、单片机项目设计、面试技术整理、最新技术分享收藏点赞不迷路 关注作者有好处文末获得源码 项目编号:BS-Python-061一,环境......
  • 10个Python函数参数进阶用法及代码优化
    目录1.默认参数值:让函数更加灵活2.关键字参数:清晰的调用方式3.*args:拥抱不确定数量的位置参数4.**kwargs:处理不确定数量的关键字参数5.参数解包:简化多参数的传递6.命名关键字参数:限制关键字参数7.局部变量与全局变量:理解作用域8.高级:装饰器(@decorator)9.Lambd......
  • python每日学习4:函数的定义和各类参数定义与用法
    目录目录一、函数的定义二、参数的定义和用法1、必选参数2、默认参数3、可变参数4、关键字参数5、命名关键字参数三、参数在实际操作中的要求一、函数的定义1、函数代码块以def关键词开头,后接函数名称和圆括号()2、在圆括号内定义传入参数3、函数的第一行语句可以......
  • 对!就是你!python特训之字典怎么学?我教你!超详细!
    目录一、字典的定义二、字典的键与值三、字典的常见操作总结一、字典的定义字典(Dictionary)是一种在多种编程语言中广泛使用的数据结构,用于存储键值对(key-valuepairs)的集合。在字典中,每个元素都是一个键值对,其中键(Key)是唯一的,用于标识对应的值(Value)。键和值可以是任意......
  • 003_python3 解释器 注释 运算符
    Python3解释器1.Linux设置环境变量$PATH=$PATH:/usr/local/python3/bin/python3#设置环境变量2.交互式编程$python#启动Python解释器3.脚本式编程Windows中写入脚本xx.py文件,执行pythonxx.py #cmd当中直接执行Linux中文件顶部写入  #!/usr/bin/envpyth......