首页 > 编程语言 >python之迭代器和生成器的使用方式

python之迭代器和生成器的使用方式

时间:2024-03-23 22:11:06浏览次数:26  
标签:迭代 python self 生成器 next current num

下面我将分别介绍迭代器和生成器的使用示例:

迭代器示例:

迭代器是一种对象,它可以在遍历时逐个访问元素而不需要将所有元素加载到内存中。下面是一个简单的迭代器示例,该迭代器生成斐波那契数列的前 n 个数字:

class FibonacciIterator:
    def __init__(self, n):
        self.n = n
        self.current = 0
        self.next_num = 1
        self.count = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self.count >= self.n:
            raise StopIteration
        result = self.current
        self.current, self.next_num = self.next_num, self.current + self.next_num
        self.count += 1
        return result

# 使用迭代器生成斐波那契数列的前 10 个数字
fibonacci_iter = FibonacciIterator(10)
for num in fibonacci_iter:
    print(num)

生成器示例:

生成器是一种特殊的函数,它可以通过 yield 关键字来暂停函数的执行,并返回一个值。每次调用生成器的时候,它会从上一次暂停的地方继续执行。下面是一个生成器示例,用于生成斐波那契数列的前 n 个数字:

def fibonacci_generator(n):
    current, next_num = 0, 1
    count = 0
    while count < n:
        yield current
        current, next_num = next_num, current + next_num
        count += 1

# 使用生成器生成斐波那契数列的前 10 个数字
fibonacci_gen = fibonacci_generator(10)
for num in fibonacci_gen:
    print(num)

以上两个示例都能生成斐波那契数列的前 10 个数字,但一个是使用迭代器实现的,另一个是使用生成器实现的。这两种方式都可以按需生成数据,而不需要一次性加载所有数据到内存中。

标签:迭代,python,self,生成器,next,current,num
From: https://www.cnblogs.com/chentiao/p/18091777

相关文章

  • Python 潮流周刊第 43 期(摘要),赠书 5 本《Python数据结构与算法分析(第3版)》
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。周刊全文:https://pythoncat.top/posts/2024-03-23-weekly特别提醒:本期赠书5......
  • python中sort的key关键字解释
    在Python中,sort() 方法是用于对列表进行排序的函数。sort() 方法可以接受一个关键字参数 key,该参数允许你指定一个函数,用于在排序过程中生成排序的依据。这个关键字参数的作用是告诉 sort() 方法如何理解列表中的元素应该被排序。下面是对 sort() 方法的 key 参数的讲......
  • 基于Python代码的相关性热力图,VIF共线性诊断图及残差四图的使用及解释
    注:热力图和共线性诊断图易看易解释,这里不再阐述残差四图(ResidualsvsFittedPlot,NormalQ-QPlot,Scale-LocationPlot,Cook'sDistancePlot)各种现象的相关解释如下:ResidualsvsFittedPlot(残差与拟合值散点图):这个图用于帮助检验回归模型的线性关系假设。在这个图中,我......
  • 【华为OD机试】真题A卷-快速开租建站(Python)
    一、题目描述【华为OD机试】真题A卷-快速开租建站(Python)题目描述:当前IT部门支撑了子公司颗粒化业务,该部门需要实现为子公司快速开租建站的能力,建站是指在一个全新的环境部署一套IT服务。1:每个站点开站会由一系列部署任务项构成,每个任务项部署完成时间都是固定和相等的,设为1......
  • 跳马【华为OD机试JAVA&Python&C++&JS题解】
    一.题目马是象棋(包括中国象棋和国际象棋)中的棋子,走法是每步直一格再斜一格,即先横着或直着走一格,然后再斜着走一个对角线,可进可退,可越过河界,俗称“马走‘日’字。给顶m行n列的棋盘(网格图),棋盘上只有有棋子象棋中的棋子“马”,并且每个棋子有等级之分,等级为k的马可以跳1~k......
  • Python实战:Lambda函数与匿名函数
    一、引言在Python编程中,Lambda函数和匿名函数是两种特殊的函数定义方式,它们可以提高代码的简洁性和可读性。Lambda函数和匿名函数通常用于简单的函数表达式,如数据处理和函数式编程。本文将详细介绍Python中的Lambda函数与匿名函数,并通过具体代码示例展示它们的应用。二、L......
  • Python日志记录
    Python的logging模块是一个内置的标准库,它为编写程序时生成、记录和管理日志信息提供了强大而灵活的功能。日志对于软件开发至关重要,尤其是在调试、监控应用状态、追踪异常行为、分析性能瓶颈以及审计等方面。入门级的logging应用主要是掌握如何在简单的Python程序中引入loggi......
  • python-day02
    python判断语句if、elif、elseif条件:结果elif条件:结果else条件:结果随件数产生importrandom#随机产生1-10的随机数num=random.randint(1,10)while循环while条件:循环体eg:while循环实现九九乘法表i=1whilei<=9:j=1whi......
  • python实现列1的数据补充到列2
    具体代码(我是以一个数据较少的csv文件做了测试,具体的csv文件需要修改部分代码才能顺利实现)importpandasaspddf01=pd.read_csv("D:\\12140\\Desktops\\111\\333\\333.csv",encoding="utf-8",dtype="str")data=df01['新增'].fillna('no_zeng......
  • python环境搭建及特定操作系统注意事项
    文章目录搭建Python环境通用的流程:**1.下载并安装Python解释器****2.验证安装****3.安装包管理器(pip)****4.安装必要的开发工具****5.创建虚拟环境(推荐)****6.安装项目所需的库****7.配置IDE/编辑器**特定操作系统(如Windows、macOS、Linux)的特定步骤或注意事项**Wi......