一、迭代器(Iterator)
1、可迭代对象(Iterable)
存储了元素的一个容器对象,且容器中的元素可以通过“__iter__( )”方法或“__getitem__( )”方法访问。可迭代对象不能独立进行迭代,可通过“for…in”遍历来完成
2、常见的可迭代对象
字符串、列表、元组、字典、集合、文件
3、迭代器对象
可迭代对象调用__iter__( )方法成为迭代器对象,迭代器对象是可以记住遍历的位置的对象。
4、迭代器特性
-
迭代器对象可以使用
iter()
函数来创建。 -
迭代器对象可以使用
next()
函数来访问容器中的元素。 -
当迭代器对象遍历完容器中的元素时,它将引发
StopIteration
异常。 -
可以使用
for
循环来遍历迭代器对象,因为for
循环自动处理了StopIteration
异常。 -
迭代器对象在遍历过程中只能向前移动,不能后退或重置。
-
迭代器对象可以被多个迭代器同时使用,每个迭代器都会维护自己的迭代状态。
-
生成器对象是一种特殊的迭代器,它们可以使用
yield
语句来定义。 -
迭代器对象可以用于惰性计算,即只有在需要时才计算下一个元素,从而节省内存和计算资源。
- 迭代器其实是一种不依赖于索引取值的方式!
5、易混淆
ll = [1, 2, 3, 4] # StopIteration 当数据被取值完的时候,如果在次next会直接报错 res = ll.__iter__() print(res.__next__()) print(res.__next__()) print(res.__next__()) print(res.__next__()) print(res.__next__()) # 取出来的值都是 1,因为每次打印都调用的ll.__iter__方法,数据被重置 print(ll.__iter__().__next__()) # 1 print(ll.__iter__().__next__()) # 1 print(ll.__iter__().__next__()) # 1 print(ll.__iter__().__next__()) # 1
二、生成器
三、异常捕获
标签:__,.__,迭代,生成器,iter,next,print From: https://www.cnblogs.com/dgp-zjz/p/17451770.html