Python基础-18-生成器

本文详细介绍了生成器的概念,包括生成器函数和生成器表达式的使用方法。通过具体示例,展示了如何利用yield语句实现数据的动态生成,以及生成器表达式如何简化生成器的创建过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

生成器

概述

生成器是能够动态提供数据的对象,生成器对象也是可迭代对象(实例)

生成器有生成器函数和生成器表达式两种

 

生成器函数

概述

含有yield语句的函数是生成器函数,此函数被调用将返回一个生成器对象。yield 翻译为(产生或生成)

 

yield语句

语法:yield 表达式

(1)yield 用于def函数中,目的是将此函数作用生成器函数使用

(2)yield 用来生成数据,供迭代器的next(it)函数使用

 

示例

# coding:utf-8

def my_yield():
    yield "a"
    yield "b"
    yield "c"
    yield "d"

gen = my_yield()
print("gen:", gen)  # gen为生成器对象 <generator object my_yield at 0x00000000063E34C0>

it = iter(gen)  # 用生成器返回一个迭代器

while True:
    try:
        print(next(it)) # next():生成器函数才开始执行
    except StopIteration:
        print("循环结束")
        break

 

 

 

生成器表达式

概述

语法:  (表达式 for 变量 in 可迭代对象 [if 真值表达式 ])

说明:  if 子句可以省略

作用: 用推导式的形式创建一个新的生成器

 

示例

# coding:utf-8

gen = [x for x in range(1,20) if x%2 ==0]
it = iter(gen)
while True:
    try:
        print(next(it))
    except StopIteration:
        print("循环结束")
        break

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值