首页 > 编程语言 >python 生成器

python 生成器

时间:2022-10-27 17:24:56浏览次数:38  
标签:迭代 python 生成器 send next print close

""" Python 当中的生成器"""

""" 生成器表达式 生成器当中 三个方法:close,send,throw()
Python 3有一个内置函数next(),
它通过调用其next ()方法从迭代器中检索下一个项目,或者通过
生成器对象检索下一个项目
"""


""" 创建生成器对象的表达式:"""
#表达式1
# tuple1 = (i for i in range(10))
# print(tuple1)
# print(next(tuple1))
""" 
返回生成器对象
<generator object <genexpr> at 0x01304E70> """


#表达式2
#生成器表达式
# def token():
#     a = yield 11
#     print(a)
#     b = yield 22
#     print(b)

#创建一个生成器对象
# a = token()
# print(a)
""" 返回结果<generator object token at 0x01B44E70>"""
# a = token()


""" 生成器中,send,close,throw方法:
方法1:throw 方法是在迭代的过程当中抛出异常信息,
相对于异常处理当中:raise  IndexError
"""
# a.throw(IndexError)
# print(next(a))
# print(next(a))
""" 
方法2:close 方法,相对于迭代器,生成器,当中可以手动执行close
关闭的方法,来实现迭代终止的操作
如果使用close,则抛出异常StopIteration"""
# a.close()
# next(a)
""" send 方法可以和生成器内部的数据进行交互."""

# def my_func():
#
#     print("=======START======")
#     values1 = yield 22
#     print("===1===",values1)
#     values2 = yield 33
#     print("===1===", values2)
#     values3 = yield 44
#     print("===1===", values3)

#创建一个生成器对象:
# a = my_func()
# print(next(a))
# print(next(a))
""" 此时我在进行下一步迭代的时候 打印values1 的属性返回的是空值
    那么如果设置values1 的值呢,这个时候就需要用到send方法跟
    生成器内部进行交互
    =======START======
    22
    ===1=== None
    33
"""
# a = my_func()
# print(next(a))
# print(a.send("wuhan"))
"""此时可以看到 我send的wuhan其实是传给 my_func当中
的values1 变量
=======START======
22
===1=== wuhan
33

"""


#第一种使用数据类型进行存储的时候,他是直接将数据存储
#在序列当中是实际占用内存的.
# list1 = [i for i in range(50000)]
# print(list1)

#创建一个生成器,那么他是直接记录生成数据的规则,我需要
# 数据时可以通过迭代器next进行取值,不会占用实际的内存
tuple1 = (i for i in range(50000))
print(next(tuple1))

 

标签:迭代,python,生成器,send,next,print,close
From: https://www.cnblogs.com/manxingsir/p/16832966.html

相关文章

  • Python主题建模LDA模型、t-SNE 降维聚类、词云可视化文本挖掘新闻组数据集|附代码数据
    全文链接:tecdat.cn/?p=24376在这篇文章中,我们讨论了基于gensim包来可视化主题模型(LDA)的输出和结果的技术(点击文末“阅读原文”获取完整代码数据********)。介绍......
  • 论Python代码风格与编程习惯的重要性
    小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。引言实现高内聚,低耦合、结构清晰不臃肿、可读性高、数据冗余性低、高复用、易扩展的代码,并非易事。上到......
  • python数据分析——lxml已下载但pycharm中使用仍然报错
    参照一本书(《python数据分析入门从数据获取到可视化》-沈祥壮)上的代码准备学习一下爬虫,但是卡在了标题中的错误中,尝试了很多方法:pipinstalllxml/pipuninstalllxml、......
  • Python从进阶到高级—通俗易懂版(五)
    #==================================#Author:Mikigo#Env:deepin20.4os#==================================自定义序列1、可切片对象切片大家都很熟悉,......
  • python | 算法-最短路径-dijikstra改进算法
    写在前面:我自己用python练习算法与数据结构的典型算法汇总在这里:汇总-算法与数据结构-python版,欢迎翻阅!1️⃣参考链接:https://github.com/algorithmzuo/algorithmbasic......
  • Python之JSON用法解析
    前景Python编写HDFS服务安装的过程中,需要将构建好的JSON对象输出到文件,采用那种方式更便捷方案1open函数defwriteExecCmdCheckActionsFile(self,out_res,che......
  • Python在接口测试中的应用
    1.介绍接口测试的方式有很多,可以使用的工具有jmeter,postman,soapUI等,也可以自己写代码进行接口测试(Python,java,go等等),工具的使用相对来说都比较简单,开箱即用。但如果接口中定......
  • 一文带你了解 Python 中的继承知识点
    1类继承Python是面向对象的编程语言,因此支持面向对象的三大特性之一:继承。继承是代码重用的一种途径,Python中的继承就像现实生活中的继承一样,子类可以顺利继承父类的属性......
  • Python7-实战
    实战01(修改手机默认语言)1classPhone:2'''手机类'''3def__init__(self,language='英文'):4iflanguage=='英文':5print("智能手......
  • conda管理python环境
    Anaconda使用教程Anaconda详细安装使用教程condacreate-nlearnpython=3//创建一个名为learn的环境并指定python版本为3(最新版本)condaactivatelearn//激活l......