python笔记:迭代器和生成器

本文详细介绍了Python中的迭代器和生成器。迭代器是一种访问集合元素的方式,需要实现`__iter__()`和`__next__()`方法。生成器是特殊的迭代器,通过`yield`关键字实现,允许在循环过程中计算元素,节省内存。生成器适用于数据量大且不需随机访问的情况。此外,还讨论了生成器的工作原理和使用方法,包括`next()`和`send()`方法。
摘要由CSDN通过智能技术生成

迭代器

1.迭代是一种访问集合元素的方式。
2.可迭代对象 : 可以直接作用于for循环的对象(iterable)

常见的可迭代对象有:
1.集合类型:List、Str、dict、 tuple
2.generator:包括生成器和待yield的generator function

判断是否可以迭代: isinstance( [ ], Iterable)
from collections.abc import Iterable
isinstance([], Iterable)
True

3.迭代器:可以被next ( )函数调用并不断返回下一个值的对象(iterator),是一个可以记住遍历位置的对象;迭代器对象从集合的第一个元素开始访问,直到所有的元素访问结束,迭代器只能往前不能往后

创建一个迭代器

1.把一个类作为一个迭代器使用,则类中必须包含两个方法:

a. __ next__(self) : 返回容器的下一个元素
b. __ iter__(self) : 返回一个迭代器(iterator)

2.迭代器都是Iterator对象,但可迭代对象不一定是迭代器。Python中的list、dict、str虽然是可迭代对象,但不是迭代器,可以使用python内置的iter()函数将其转换为一个迭代器。

iter(obj)
myIter = iter([1,2,3])

迭代器迭代的几种方式

a. 通过调用迭代器中的__next__()方法
b. 通过内置的next()方法
c. 常规的for循环进行遍历

class MyNumbers:
  def __iter__(self):
    self.a = 1
    return self
 
  def __next__(self):
    x = self.a
    self.a += 1
    return x
 
myclass = MyNumbers()
myiter = iter(myclass)   # 返回一个迭代器

#迭代方式1
print(myiter.__next__())
print(myiter.__next__())
#迭代方式2
print(next(myiter))  #不断地返回容器中下一个元素
print(next(myiter))
print(next(myiter))
#迭代方式3
for item 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值