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

python 生成器 yield

时间:2023-06-17 14:32:17浏览次数:53  
标签:迭代 generator python 生成器 yield next print

生成器属于迭代器

https://mp.weixin.qq.com/s/F3GLVY2EUpISpt_koCDmWg

生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象。

迭代器 for __next__

生成器 return yield

'''generator(生成器)'''
# https://mp.weixin.qq.com/s/F3GLVY2EUpISpt_koCDmWg

# 最简单的创建一个生成器的方式,只要把一个列表生成式的 [] 改成 () ,就创建了一个generator:
(x*2 for x in range(10))

# 生成器(generator)能够迭代的关键是它有一个next()方法,工作原理就是通过重复调用next()方法,直到捕获一个异常
g = (x for x in range(3)) # [0:3)
g.__next__()
# 第二种方法就是, 如果一个函数中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator
# 调用函数就是创建了一个生成器(generator)对象。
def gen_example():
    print ('第1次执行啦~,还没到第一个yield!')
    yield '我是第1个遇见的yield,你遇到我就要返回'
    
    print ('第2次执行啦~,还没到第二个yield')
    yield '我是第2个遇见的yield,你遇到我就要返回'
    
    print ('第3次执行啦,我运行完 函数就执行完毕啦~')


for i in gen_example():
    print(i)
    print("\n--------分割线--------\n")
def evenNumber(max):
    n = 0
    while n < max:
        yield n
        n += 1
        
for i in evenNumber(3):
    print(i)


[ i for i in evenNumber(3) ]

标签:迭代,generator,python,生成器,yield,next,print
From: https://blog.51cto.com/u_16055028/6504956

相关文章

  • python之json和ymal模块
    json和ymal是常用的数据交换格式,ymal可以看做是json的超集。1json格式json(JavaScriptObjectNotation)是一种轻量级的数据交换格式,常用于在不同系统之间进行数据传输和存储。它由键值对构成的集合组成,通常以文件扩展名.json命名。JSON的结构非常简单,有两种基本的数据结构:1.......
  • Python自学整理
    Python对大小写敏感。在Windows下可以不写第一行注释:#!/usr/bin/python3第一行注释标的是指向python的路径,告诉操作系统执行这个脚本的时候,调用/usr/bin下的python解释器。此外还有以下形式(推荐写法):#!/usr/bin/envpython3这种用法先在env(环境变量)设置里查找pyth......
  • Python 文件操作(转载)
    Python文件操作操作文件时,一般需要经历如下步骤打开文件操作文件一、打开文件文件句柄=open('文件路径','模式')打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作。打开文件的模式有r,只读模式(默认)。w,只......
  • Python os 模块简述
    os模块简介os就是“operatingsystem”的缩写,顾名思义,os模块提供的就是各种Python程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面页也可以极大增强代码的可移植性。如果该模块中相关功能出错,会抛出OSError异常或其子类异常。impo......
  • Python程序与设计
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运算......
  • Python自动化运维
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运算......
  • Python数据类型-字典与集合
    """题目1:下面关于字典的定义正确的是:CA.d={1,}B.d={1,2:3,4}C.d={'name':'xinlan','age':18}D.d={[1,2]:[3,4],'age':18}"""#题目2:请创建一个字典用来表示你自己的个人信息。有哪些key由你自己来决定。my_info={'name':&......
  • Day01 1.4 Python虚拟环境的搭建
    Day011.4Python虚拟环境的搭建【一】虚拟环境介绍(1)虚拟环境优点1、使不同应用开发环境相互独立2、环境升级不影响其他应用,也不会影响全局的python环境3、防止出现包管理混乱及包版本冲突(2)什么是虚拟环境,为什么要有它?它解决了什么问题操作系统装了python3.8使用djang......
  • python入门学习之《python编程快速上手》
    #《python编程快速上手》1-9章第1-2章:python基础和控制流#python严格区分大小写;#代码行的缩进很重要,一般用4个空格。大多数情况下,代码行缩进告诉python它属于哪个代码块。#python下标从0开始;#行末使用续行字符\,将一行指令写成多行。在[],{},或()中的多行语句,不需要使用反斜......
  • python之冒泡排序
    冒泡排序原理:;两两比较,将(大、小)的元素往右移importrandoma=random.sample(range(0,10),4)#随机生成4个1到10之内的数字lenth=len(a)#获取长度print(a)#需要冒泡排序的列表#比较(趟数),最后一趟无需比较,所以减1forjinrange(lenth-1):#-1:最后一......