迭代器
for 变量 in 可迭代:
pass
iterable:可迭代的东西
str,list,tuple,dict,set,open()
可迭代的数据类型都会提供一个叫迭代器的东西,这个迭代器可以帮我们把数据类型中的所有数据逐一拿到。
获取迭代器的两种方案:
1.iter() 内置函数可以直接拿到迭代器
2.__iter__() 特殊方法
从迭代器中拿到数据:
1.next() 内置函数
it = iter("我真帅!") #一次拿一个 print(next(it)) print(next(it)) print(next(it)) print(next(it)) print(next(it))
StopIteration :迭代停止,不可以再从迭代器中拿数据
2.__next__() 特殊方法
it = "呵呵哒".__iter__() print(it.__next__()) print(it.__next__()) print(it.__next__())
3.模拟for循环
for里面一定有迭代器,所以所有不可迭代的东西不能用for循环
for里面一定有__next__()出现
总结:迭代器统一了所有不同数据类型的遍历工作
#模拟for循环
s = "fuck!!!!又封了"
it = s.__iter__() #拿到迭代器
while 1:
try:
data = it.__next__()
print(data) #for循环
except StopIteration:
break
#for循环
for i in s:
print(i)
4.迭代器特性:
①迭代器本身也是可以迭代的(套娃)
s = "12313啊啊啊"
it = s.__iter__()
for mn in it:
print(mn)
②特性:
迭代器只能向前,不能反复
特别节省内存,遍历庞大的数据集很快
惰性思维:不调用就不往前走,执行__next__()


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



