山东省建设安全监督站的网站,网站网站建站,成都热点新闻最新,郑州男科十佳医院排名1、迭代器
迭代器是一个对象#xff0c;它可以记录遍历的相关信息#xff0c;迭代器对象从集合的第一个元素开始访问#xff0c;直到所有的元素被访问完结束。迭代器有两个基本的方法#xff1a;iter() 和 next()。我们都过命令行工具#xff0c;了解一下python的底层迭代…1、迭代器
迭代器是一个对象它可以记录遍历的相关信息迭代器对象从集合的第一个元素开始访问直到所有的元素被访问完结束。迭代器有两个基本的方法iter() 和 next()。我们都过命令行工具了解一下python的底层迭代机制 items [1,2,3]it iter(items)next(it)
1next(it)
2next(it)
3next(it)
Traceback (most recent call last):File stdin, line 1, in module
StopIteration上面执行的流程
根据给定的可迭代对象生成迭代器从迭代器中重复获取下一项如果成功获得了下一项上一项已经消失如果在获取下一项时遇到“StopIteration”异常则停止循环因为后面没有其他项了
2、应用
1、不使用for循环实现对可迭代对象便利可以使用什么实现遍历呢 手动的遍历可迭代对象使用 next() 函数并在代码中捕获 StopIteration 异常
def manual_iter():with open(test.txt) as f:try:while True:line next(f)print(line, end)except StopIteration:pass2、自定义迭代器 Python 中创建自定义迭代器需要实现一个类该类必须包含 iter() 和 next() 方法。iter() 方法返回迭代器对象本身next() 方法返回序列中的下一个元素
class EvenIterator:def __init__(self, lst):self.lst lstself.index 0def __iter__(self):return selfdef __next__(self):while self.index len(self.lst):current self.lst[self.index]self.index 1if current % 2 0:return currentraise StopIterationmy_list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]for i in EvenIterator(my_list):print(i)输出
2
4
6
8
10在上面的示例中定义了一个名为 EvenIterator 的类该类接受一个列表作为参数。我们实现了 iter() 和 next() 方法来定义迭代器的行为并在 next() 方法中使用 raise StopIteration 来指示迭代结束。