一.什么是迭代器
- 迭代器就是用来迭代取值的工具
举例:
while True:
msg=input('>>>: ').strip()
print(msg)
list=[1,2,3,4,5,6]
index=0
while index < len(list):
print(list[index])
index+=1
1.1.可迭代对象
- 通过索引迭代取值,适用与字符串,列表,元组
- python内置__iter___方法的对象都是可迭代对象
set={1,2,3,4} # 可迭代对象
a=iter(set) # 本质就是在调用s.__iter__(),返回迭代器对象
print(next(a))
list=[1,2,3,4,5,6,7]
a=iter(list)
while True:
try:
print(next(a))
except StopAsyncIteration: # 捕捉异常迭代结束
break
- Iterable:可迭代类型
- Iterator:迭代器类型
from collections import Iterable
from collections import Iterator
list=[1,2,3,4]
a=iter(list)
print(isinstance(list,Iterable),isinstance(list,Iterator))
print(isinstance(a,Iterable),isinstance(a,Iterator))
# 返回结果
True False
True True
二.迭代器的优缺点
2.1.优点
- 为序列和非序列类型提供了一种统一的迭代取值方式
- 惰性机制:迭代器对象表示的是一个数据流,可以只在需要时才去调用next来计算出一个值,就迭代器本身来说,同一时刻在内存中只有一个值,因而可以存放无限大的数据流,而对于其他容器类型,如列表,需要把所有的元素都存放于内存中,受内存大小的限制,可以存放的值的个数是有限的。
2.2.缺点
- 不能反复, 只能向下执行;