返回顶部
首页 > 资讯 > 后端开发 > Python >Python中yield返回生成器的详细方法
  • 234
分享到

Python中yield返回生成器的详细方法

2024-04-02 19:04:59 234人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、迭代器二、生成器三、yield1.例子一2.例子二总结最简单、直观的认识,将 yield 看做 return 对待,只是 return 返回一个值,而 yield 返回一个生

最简单、直观的认识,将 yield 看做 return 对待,只是 return 返回一个值,而 yield 返回一个生成器。

要理解 yield 的作用,必须理解生成器是什么?

在理解生成器之前,必须先理解迭代器。

一、迭代器

逐项读取列表,称为迭代。


mylist = [1, 2, 3]
for i in mylist: # 可迭代对象
    print(i)

列表解析式同样是一个迭代器。


mylist = [x*x for x in range(3)]
for i in mylist:
    print(i)
'''
0
1
4
'''

所有 for...in... 都是迭代器,包括列表、字符串、文件等等。

但是,迭代器所有的值都存储在内存中,十分浪费内存。

因此有了生成器的概念。

二、生成器

生成器是一种迭代器,这种迭代器只能迭代一次。

生成器不会一次性存储所有的值,而是会动态的生成值。


mygenerator = (x*x for x in range(3))
for i in mygenerator:
    print(i)

生成器只可执行一次,再次执行时不会输出任何东西。

三、yield

1.例子一

yield 类似于 return 关键字,只是函数将返回一个生成器。


# 创建生成器
def createGenerator():
    mylist = range(10)
    for i in mylist:
        print(i) # 验证函数调用时并无执行
        yield i*i
mygenerator = createGenerator()    
print(mygenerator) 
# <generator object createGenerator at 0x0000029E88FDCA50>
# 使用生成器
for i in mygenerator:
    print(i)
# 再次执行 返回为空 没有值了

函数将返回一组只需要读取一次的值,可以大大的提升代码性能。

在调用函数时,函数体中的代码并不会执行,函数只返回生成器对象。

代码每次从使用生成器时停止的地方继续。

2.例子二


#python学习交流群:531509025
# 学习另外一个例子
def foo():
    print("starting...")
    while True:
        res = yield 4 # 函数并不真正执行
        print("res:", res)
g = foo() # 得到一个生成器对象
print(next(g)) # 真正执行
print("*"*20)
print(next(g)) # 从上一次停止的地方继续执行
'''
starting...
4
********************
res: None
4
'''
print(g.send(7))

执行 yield 之后,才会跳出 while 循环。

next 函数用于执行下一步操作。

send 函数用于发送一个参数给生成器。且 send 方法中包含 next 方法。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: Python中yield返回生成器的详细方法

本文链接: https://lsjlt.com/news/156345.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python中yield返回生成器的详细方法
    目录一、迭代器二、生成器三、yield1.例子一2.例子二总结最简单、直观的认识,将 yield 看做 return 对待,只是 return 返回一个值,而 yield 返回一个生...
    99+
    2024-04-02
  • Python中yield返回生成器的方法是什么
    这篇文章主要讲解了“Python中yield返回生成器的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python中yield返回生成器的方法是什么”吧!一、迭代器逐项读取列表,称...
    99+
    2023-06-25
  • python里的生成器--yield
    Python的生成器是个很强大的东西,特别是在python3.0版本以后。以最简单的方式让大家快速理解生成器。 1、正常的写法来看个例子,比如输出一个自定义长度的列表一般这么写:这里传入的参数时10,所以会得到一个包含10个元素的列表:那当...
    99+
    2023-01-31
    生成器 python yield
  • Python 生成器yield原理及用法
    目录前言1. 什么是yield2. yield 原理3. yield 常见用法总结前言 在Python中存在两种好用的功能迭代器与生成器。当我们刚开始接触到时,会简单的认为迭代只不过...
    99+
    2024-04-02
  • python中yield的用法详解—
    此文转载,侵删,原文地址:https://blog.csdn.net/mieleiz... 首先,如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的return是...
    99+
    2023-01-31
    详解 python yield
  • Python中yield的使用方法
    这篇文章主要介绍“Python中yield的使用方法”,在日常操作中,相信很多人在Python中yield的使用方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中yield的使用方法”的疑惑有所...
    99+
    2023-06-15
  • SpringMVC框架中@Controller类的方法的返回值的详细介绍
    目录 前言 1. 返回值类型为ModelAndView 2.  返回值为String(视图) 3.  返回值为void 4.  返回值为Object 5. 返回值为List  6. 返回值为String(数据) 前言 在SpringMV...
    99+
    2023-09-16
    spring java SpringMVC 返回值类型 Controller注解
  • 用生成器来改写直接返回列表的函数方法
    本文是一篇关于《Effective Python》书中一节的学习笔记,记录了示例代码和思路。 如果函数要产生一系列结果,那么最简单的做法就是把这些结果都放在一个列表里返回。 比如我们要查出字符串中每个词的首...
    99+
    2022-06-04
    生成器 函数 方法
  • python中int返回的方法示例
    这篇文章给大家分享的是有关python中int返回的方法示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)...
    99+
    2023-06-14
  • Python 3中的yield from语法详解
    前言 最近在捣鼓Autobahn,它有给出个例子是基于asyncio 的,想着说放到pypy3上跑跑看竟然就……失败了。 pip install asyncio直接报invalid syntax,粗看还以为...
    99+
    2022-06-04
    语法 详解 Python
  • python中yield函数的用法详解
    首先,如果你还没有对yield有个初步分认识,那么你先把yield看做“return”,这个是直观的,它首先是个return,普通的return是什么意思,就...
    99+
    2024-04-02
  • 深入了解PHP中生成器yield的使用
    目录1. 什么是 "yield"2.yield 解决的问题3."yield" & "return" 的区别4. 什...
    99+
    2024-04-02
  • python中yield from的使用方法
    这篇文章主要介绍了python中yield from的使用方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python的五大特点是什么python的五大特点:1.简单易学,...
    99+
    2023-06-14
  • Python中生成Epoch的方法
    在Python2中datetime对象没有timestamp方法,不能很方便的生成epoch,现有方法没有处理很容易导致错误。关于Epoch可以参见时区与Epoch 0 Python中生成Epoch f...
    99+
    2022-06-04
    方法 Python Epoch
  • python生成式的send()方法(详解)
    随便在网上找了找,感觉都是讲半天讲不清楚,这里写一下。 def generator(): while True: receive=yield 1 print('extra'+str(...
    99+
    2022-06-04
    详解 方法 python
  • Python实现迷宫生成器的详细代码
    作为一项古老的智力游戏,千百年来迷宫都散发着迷人的魅力。但是,手工设计迷宫费时又耗(脑)力,于是,我们有必要制作一个程序:迷宫生成器…… 好吧,我编不下去...
    99+
    2024-04-02
  • python使用生成器的方法
    这篇文章主要介绍了python使用生成器的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇python使用生成器的方法文章都会有所收获,下面我们一起来看看吧。尽可能使用生成器单机处理较大数据量时,生成器往往很...
    99+
    2023-06-27
  • 详解Vue返回值动态生成表单及提交数据的办法
    目录主要解决的问题一、后端返回的数据,提交到后端的数据格式如下:二、vue前端代码如下:总结 主要解决的问题 1、vue在循环的时候需要动态绑定不同的v-model;vue动态的表单...
    99+
    2024-04-02
  • python 生成器生成杨辉三角的方法(必看)
    用Python写趣味程序感觉诺模2幌吕/p> #生成器生成展示杨辉三角 #原理是在一个2维数组里展示杨辉三角,空的地方用0,输出时,转化为' ' def yang(line): n,leng=0,2...
    99+
    2022-06-04
    生成器 必看 方法
  • Python生成直方图方法实现详解
    目录1. 引言2. 生成数据3. 使用Matplotlib绘制直方图4. 使用Pandas绘制直方图5. 总结1. 引言 你想知道如何在Python中生成直方图吗?在本教程中,我将向...
    99+
    2022-11-16
    Python生成直方图 Python直方图 Python绘制直方图
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作