迭代器
1.概念: 迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而继续的,单纯的重复并不是迭代
2.特征: 并不依赖索引,而通过next指针迭代所有数据,一次只取一个值,大大节省空间
3.可迭代对象
setvar = {"a","b","c","d"}
for i in setvar:
print(i)
# dir 获取当前类型对象中的所有成员
# __iter__ 方法用来判断是否是可迭代性数据
lst = dir(setvar)
print(dir("123"))
res = "__iter__" in dir(setvar)
print(res)
4.迭代器
for 循环能够遍历一切可迭代性数据的原因在于,底层调用了迭代器,通过next方法中的指针实现数据的获取
可迭代对象 -> 迭代器
不能够被next直接调用 -> 可以被next直接调用的过程
如果是一个可迭代对象不一定是迭代器
但如果是一个迭代器就一定是一个可迭代对象
(1) 如何定义一个迭代器
setvar = {"a","b","c","d"}
it = iter(setvar)
print(it)
(2) 如何判断一个迭代器
print(dir(it))
res = "__iter__" in dir(it) and "__next__" in dir(it)
print(res)
(3) 如何调用一个迭代器
res = next(it)
print(res)
res = next(it)
print(res)
res = next(it)
print(res)
res = next(it)
print(res)
如果调用的次数大于迭代器中元素的个数,会报StopIteration 错
next在调用迭代器中的数据时,是单向不可逆的
(4) 重置迭代器
it = iter(setvar)
res = next(it)
print(res)
(5) 使用其他方式判断迭代器或者可迭代对象
**Iterator 迭代器 Iterable 可迭代对象**
from collections import Iterator,Iterable
res = isinstance(it,Iterator)
print(res)
res = isinstance(it,Iterable)
print(res)
# (6) 使用其他方式调用迭代器中的数据
# 1. for 循环
for i in it:
print(i)
# 2. for + next
lst = [1,2,3,4,5,6,7,7,8,9,10]
it = iter(lst)
for i in range(10):
res = next(it)
print(res)
print(next(it))
print(next(it))
本文深入解析了迭代器的概念、特征及其与可迭代对象的区别。通过具体示例介绍了如何定义、判断和调用迭代器,以及如何重置迭代器。同时,还探讨了使用不同方法遍历迭代器中的数据。
782

被折叠的 条评论
为什么被折叠?



