迭代器对象和可迭代对象

可迭代对象

可以被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
posted @ 2023-01-03 10:53  lxd670  阅读(23)  评论(0编辑  收藏  举报