首页 > 编程语言 >Python 中的生成器函数有什么作用及如何使用?

Python 中的生成器函数有什么作用及如何使用?

时间:2024-08-06 21:23:21浏览次数:11  
标签:语句 函数 迭代 Python 生成器 yield 生成

生成器函数是一种特殊的函数,可以在迭代过程中动态生成值,而不是一次性返回所有值。它的作用有以下几点:

  1. 节省内存:生成器函数一次只生成一个值,并在生成后立即释放内存,这样可以减小内存的占用,特别是在处理大数据集时非常有用。

  2. 延迟计算:生成器函数可以按需生成值,只在需要的时候才会计算,可以有效地减少计算量。

  3. 无限序列:生成器函数可以生成无限序列,例如斐波那契数列,只需在函数中使用循环即可。

生成器函数使用yield语句来生成值,每次调用生成器函数时,执行到yield语句时会返回一个值,并暂停函数的执行,等待下一次调用。使用生成器函数的步骤如下:

  1. 定义生成器函数:使用关键字def定义一个函数,并在函数体内使用yield语句返回值。

  2. 调用生成器函数:调用生成器函数时,并不会执行函数体内的代码,而是返回一个生成器对象。

  3. 迭代生成器对象:使用for循环或者next()函数迭代生成器对象,每次迭代都会执行生成器函数的代码,直到执行到yield语句时返回一个值。

例如,下面是一个生成斐波那契数列的生成器函数的示例:

def fibonacci():
    a, b = 0, 1
    while True:
        yield a
        a, b = b, a + b

# 调用生成器函数
fib = fibonacci()

# 迭代生成器对象
for i in range(10):
    print(next(fib))

输出结果为:

0
1
1
2
3
5
8
13
21
34

在上面的示例中,生成器函数fibonacci()使用yield语句在每次迭代时生成一个斐波那契数列的值,并通过next()函数迭代生成器对象fib来获取值。

标签:语句,函数,迭代,Python,生成器,yield,生成
From: https://blog.csdn.net/xy520521/article/details/140966778

相关文章

  • Python、R银行信用卡客户流失机器学习预测热门文章合集
    原文链接:https://tecdat.cn/?p=37244原文出处:拓端数据部落公众号 分析师: CengjunWang目前,众多银行由于服务质量的降低、同业竞争的日益激烈等因素,面临着信用卡客户流失的棘手难题,这给银行经理施加了沉重的压力。而且,获取新的信用卡用户所需成本通常高于维持现有用户的成本。......
  • C语言:函数
    函数是对步骤的封装。函数分两类:一类是系统函数,一类是自定义的函数。系统自带的函数如我们现在一直在用的printf。而今天我们主要说的是自定义函数。首先,我们要明白自定义函数的目的就是为了把一些麻烦复杂的东西封装起来,当我想用的时候可以直接调用,当然除此之外函数还有其......
  • Python动态规划
    Python动态规划动态规划(DynamicProgramming,简称DP)是解决多阶段决策过程最优化问题的一种方法。动态规划算法的基本思想是:将待求解的问题分解成若干个相互联系的子问题,先求解子问题,然后从这些子问题的解得到原问题的解;对于重复出现的子问题,只在第一次遇到的时候对它进行求解,......
  • 概率生成函数学习
    https://www.cnblogs.com/zzctommy/p/14256844.htmlhttps://www.cnblogs.com/HenryHuang-Never-Settle/p/14702997.html概率生成函数,设多项式\(F(x)=\sumP(X=i)x^i\)。则:\(F(1)=1\);\(E(x)=F'(1)\);\(E(x^{\underline{k}})=F^{(k)}(1)\),\(k\)阶导。\(......
  • python-分享篇-英文短文自动分词写入文本文件
    文章目录准备代码效果准备代码importstringf=open('./data/split.txt')s=f.read()str1=s.title()print(str1)print("".join([sforsinstr1.splitlines(True)ifs.strip()]))list1=str1.split()#采用默认分隔符进行分割#字符串列表去重l1=list(s......
  • 【学习笔记】Matlab和python双语言的学习(最大最小化规划)
    文章目录前言一、最大最小化规划二、选址问题三、代码实现----Matlab1.Matlab的`fminimax`函数2.Matlab代码四、代码实现----python总结前言通过模型算法,熟练对Matlab和python的应用。学习视频链接:https://www.bilibili.com/video/BV1EK41187QF?p=28&vd_sour......
  • 【NumPy 入门:常用函数与方法总结】
    文章目录前言1、np.array()函数2、np.arange函数(用于生成数值序列的函数)3、np.linspace函数(用于生成数值序列的函数)4、ndarray.dtype和ndarray.dtype.name属性5、矩阵乘积6、ravel方法、T和flat属性7、np.vstack和np.hstack函数8、column_stack函数9、np.r_和......
  • 关于简单的部分数学函数用python求导的示例
    1.求常数的导数题目代码1.求常数的导数:$f(x)=c$ 运行代码fromsympyimport*x,c=symbols('xc')c.diff(x)结果 2.求幂函数导数:题目代码2.求幂函数导数:$$f(x)=x^\mu$$运行代码fromsympyimport*x,mu=symbols('xmu')(x**mu).diff(x)结果  3.求三角......
  • 使用python解决一些计算 我们代码不比计算机差!
    使用python解决一些计算我们代码不比计算机差!一.简单基础计算1.基本的计算符号加+减-乘*****除/取余%乘方******整除//加减乘除不必多说说说比较陌生的取余乘方与整除取余%:10%3-->110-3-3-3=1最后剩下的数就是余数整除//:10//3-->310除3=3.333333去掉......
  • 机器学习中的两个重要函数--sigmoid和softmax
    机器学习中,常常见到两个函数名称:sigmoid和softmax。前者在神经网络中反复出现,也被称为神经元的激活函数;后者则出现在很多分类算法中,尤其是多分类的场景,用来判断哪种分类结果的概率更大。本文主要介绍这两个函数的定义,形态,在算法中的作用,以及两个函数之间的联系。1.sigmoid函数......