可迭代对象与迭代器
面向对象与高级 Python#Python全栈#第三阶段#面向对象与高级 Python#可迭代对象与迭代器约 588 字 · 2 分钟阅读
追问显示点击任意追问卡片可收起 / 展开
可迭代对象与迭代器有什么区别?
追问 列表、列表迭代器和生成器分别属于什么类型?一个迭代器是否也可迭代?
iter() 与 next() 分别做什么?
追问 迭代结束时发生什么?
next(iterator, default) 如何表达结束后的默认行为?for 循环如何使用迭代协议?
追问
__iter__()、__next__() 与 StopIteration 如何协作?如何实现一个从起始值到结束值的自定义迭代器?
追问 结束边界、内部状态和耗尽后的行为如何验证?
如何设计可以多次独立遍历的集合对象?
追问 每次返回新的迭代器,与集合本身充当同一个迭代器有什么区别?
同一个迭代器连续执行两次 list(iterator),会得到什么?
追问 第一次读取如何改变状态?想重新遍历时应该重建什么?
为什么不能根据“可以遍历”推断一个对象支持长度或下标?
追问 无限迭代器、流式数据与普通列表在这些操作上有什么不同?
enumerate() 与 zip() 分别适合什么任务?
追问 zip 输入长度不同会怎样?要求长度一致时如何校验或使用对应版本支持的选项?
map() 与 filter() 在 Python 3 中如何产生结果?
追问 惰性计算与列表推导式在执行时机、重复读取和异常位置上有什么差异?
如何从大数据序列中只读取前若干条,而不把全部结果转成列表?
追问
itertools.islice()、终止条件和有限读取如何使用?输入无限时要注意什么?