iterable:可迭代的东西
iterator:迭代器
可迭代的东西:str,list,tuple,dict,set,open
可迭代的数据类型都会提供一个叫迭代器的东西,这个迭代器可以帮我们把数据类型中的所有数据逐一拿到
获取迭代器的两种方案:
1.iter():内置函数可以直接拿到迭代器
2.__iter__() : 特殊方法
从迭代器中拿到数据
1.next() 内置函数
2.__next__() 特殊方法
it = iter('你叫什么名字呢')
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it)) # 报错StopIteration,因为上面已经迭代完了
输出:
Traceback (most recent call last):
File "D:/pythonPLianxi1/python/20211203.py", line 9, in <module>
print(next(it))
StopIteration
你
叫
什
么
名
字
呢
方法2
# 这个用比较少
it ='这里是哪里'.__iter__()
#然后用__next__或next都可获取
print(it.__next__())
print(next(it))
print(it.__next__())
print(next(it))
print(next(it))
输出:
这
里
是
哪
里
模拟for循环
# 模拟for循环工作原理
s='外面在下雨'
# it= s.__iter__()
it =iter(s)
while 1:
try:
# data = it.__next__()
data = next(it)
print(data)
except StopIteration: # 超出迭代内容就跳出循环
break
输出:
外
面
在
下
雨
for里面一定是要有迭代器的iter,__iter__(),,for循环一定有next(),__next__()
总结:迭代器统一了不同数据类型的遍历工作,让不同的数据类型有相同的遍历方式。