迭代器的特点:
1.只能向前
2.几乎不占用内存
3.惰性机制
s = 'abc'
print(dir(s)) #可以查看xx类型可以执行那些方法 iter
所有带iter可以使用for循环, 可迭代对象
可迭代对象可以用过iter()来获取迭代器
迭代器里有next
s = '123'
it = s.__iter__(); #获取迭代器
# print(dir(it)) #迭代器里有__iter__ 有 __next__
#['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__length_hint__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__']
print(it.__next__()) #1
print(it.__next__()) #2
print(it.__next__()) #3
迭代器模拟for循环
lst = ['qiaoning','wangtao','linux','python']
for el in lst: #获取迭代器
print(el)
剖析for循环原理
lst = ['qiaoning','wangtao','linux','python']
lt = lst.__iter__()
while 1:
try:
el = lt.__next__()
print(el)
except StopIteration:
break
lst = ['qiaoning','wangtao','linux','python']
lt = lst.__iter__()
print('__iter__' in dir(lt))
print('__next__' in dir(lt))
#可以通过dir判断数据是否是可迭代的。 以及数据是否是迭代器
网友评论