迭代器与生成器

本文详细介绍了Python中的迭代器和生成器,包括它们的定义、特点(如迭代器逐个获取值,生成器按需生成且保持状态),并通过示例展示了它们在实际中的使用。
摘要由CSDN通过智能技术生成

迭代器和生成器是python中用于处理可迭代对象的两个相关但不相同的概念,他们在实现和使用方式上有一些区别。

一 迭代器

定义:迭代器是一个实现了"__iter__()"和"__next__()"方法的对象。"__iter__()"返回迭代器自身对象,“__next__()”返回迭代中的下一个值。

特点:迭代器是一种用来遍历序列的通用方法,它一次只能获取一个值,直到序列结束。如果没有更多的值可获取,"__next__()"方法引发'StopIteration'异常。

示例:

num = [1, 2, 3, 4, 5]
iter_num = iter(num)

print(next(iter_num)) #输出:1
print(next(iter_num)) #输出:2

二 生成器

定义:生成器是一种特殊的迭代器,它使用yield语句来生成值。生成器函数包含yield语句,每次调用生成器函数时,他会执行到yield处并返回一个值,然后暂停保持函数的状态,等待下一次调用。

特点:生成器函数在迭代过程中保持状态,因此不需要在内存中保存整个序列。生成器按需生成值,不需要一次性在内存中存储整个序列,因此在处理大量数据或无限序列时更加高效。

示例:

 def genarator(n):
    for i in range(n):
        yield i

gen = genarator(3)

for num in gen:
    print(num)

#输出:
#0
#1
#2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值