迭代器与生成器专项测试
考察知识点
- 迭代器协议:__iter__和__next__方法、StopIteration异常
- 生成器函数:yield关键字、生成器状态、惰性计算
- 生成器表达式:语法形式、与列表推导式的对比
- yield高级用法:yield from、send方法、close方法
迭代器协议要求对象实现__iter__方法返回迭代器本身,以及__next__方法返回下一个元素或抛出StopIteration异常表示迭代结束。
迭代器的__next__方法在什么情况下抛出StopIteration?
迭代器协议:______返回______,______返回下一个______。迭代结束抛_____________。next()函数调用______方法。for循环自动处理_____________。迭代器只能______遍历______。可迭代对象需实现______返回迭代器。
yield from语法用于将生成器的产出委托给另一个子生成器,简化嵌套生成器的编写,可以自动处理子生成器的所有产出和最终返回值。
yield from iterable与for item in iterable: yield item的区别是?
yield ______委托子生成器。自动产出______元素。可获取子生成器的______值。简化______迭代。chain生成器用yield ______ iterable。子生成器return值赋给______ = yield from ______()。yield from支持______通信。用于组合____________。
itertools是Python标准库模块,提供高效迭代工具函数,包括chain连接迭代器、zip_longest不等长配对、islice切片迭代器、count无限计数、cycle循环迭代等。
itertools.chain([1,2], [3,4])的输出是?
itertools.______连接迭代器。___________不等长配对。______切片迭代器。______无限计数。______无限循环。______重复元素。_____________展开嵌套。内存______,______计算。可处理______序列。list(______([1,2],[3]))返回[1,2,3]。
itertools提供的count、cycle、repeat是无限迭代器,可以产生无限序列。使用时必须手动终止(如break或islice限制),否则会无限循环。
itertools.count(10, 2)产生的序列是:
count(______, ______)无限计数。______(seq)无限______元素。______(obj, ______)重复。无限迭代器需______终止。用______限制数量。用_________条件限制。用______退出循环。count(10,2)序列:______,12,14...无限。
自定义迭代器类需要实现完整的迭代器协议:__iter__方法返回迭代器本身,__next__方法返回下一个元素并在迭代结束时抛出StopIteration异常。
以下哪个是正确的可迭代对象设计(可多次迭代)?
迭代器类实现______和______。__iter__返回______。__next__返回______或抛_____________。可迭代对象__iter__返回______迭代器。迭代器用完______,可迭代对象可______迭代。计数迭代器用______跟踪位置。自定义迭代器比生成器______。
📝 发现内容有误?点击此处直接编辑
长按或扫描二维码,立即体验