迭代器
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。
迭代器只能往前不会后退。
什么是可迭代对象?
- 只要内部含有 “iter” 方法的就是可迭代对象,遵循可迭代协议
- 可迭代对象包括:string、list、tuple、dict、range()、文件句柄等
s = "abc"
print(dir(s))
# 运行结果:['__add__',... '__iter__',... '__len__',...'__str__'...]
# 发现其中是有 __iter__ 方法的
迭代器有两个基本的方法:iter() 和 next()。
- ter(iterable)从可迭代对象中返回一个迭代器,iterable必须是能提供 一个迭代器的对象
- next(iterator) 从迭代器iterator中获取下一了记录,如果无法获取下 一条记录,则触发stoptrerator异常
判断一个对象是否是可迭代对象
# 第一种方法
s = "abc"
print("__iter__" in dir(s)) # True
print("__iter__" in dir(range(10))) # True
# 第二种方法
from collections import Iterable
from collections import Iterator
s = "abc"
obj = iter(s)
print(obj) # <str_iterator object at 0x7fc50daeab38>
print(isinstance(obj, Iterable)) # True
print(isinstance(obj, Iterator)) # True
print(isinstance(s, Iterable)) # False
print(isinstance(s, Iterator)) # False
注意:
1.迭代器只能往前取值,不会后退
2.用iter函数可以返回一个可迭代对象的迭代器
a=[1,2,3,4,5]
b=iter(a)
print(type(b)) # <class 'list_iterator'>
print(next(b)) # 1
print(next(b)) # 2
print