迭代器对象和可迭代对象
可迭代对象
可以被for循环的对象
判断是否是可迭代对象
from collections.abc import Iterable
my_str = 'abcd'
isinstance(my_str, Iterable) # True
迭代器
迭代器是一个可以记住遍历位置的对象,迭代器从第一个元素开始访问,直到所有元素被访问完,迭代器只能往前,不能后退
list/dict/str..都是可迭代对象,通过iter()可以取到迭代器,通过next()可以获取下一条数据,当没有数据的时候会抛出一个Stopiteration异常,for循环本质就是使用了iter()和next()加上异常捕获
iter(可迭代对象)
获取可迭代对象
的迭代器
next(迭代器)
获取迭代器的值
nums_list = [1, 2, 3, 4]
print(type(nums_list)) # <class 'list'>
num_iter = iter(nums_list)
print(type(num_iter)) # <class 'list_iterator'>
迭代器对象
和可迭代对象
# 迭代器对象 一定是 可迭代对象
# 可迭代对象 不一定的 迭代器对象
from collections.abc import Iterable
from collections.abc import Iterabor
muns = [1,2,3]
muns_iter = iter(nums)
isinstance(muns, Iterable) # True
isinstance(muns, Iterabor) # False
isinstance(muns_iter, Iterable) # True
isinstance(muns_iter, Iterabor) # True
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义