首先要理解相关概念
迭代:按某种顺序逐个访问集合的每一项
可迭代对象:能够被迭代的对象,例如列表,字符串,元组,字典
判断是否为可迭代对象,以字符串为例:
str = "abc"
# 1.可以for in
for i in str:
print(i) // a b c
# 2.collections.Iterable
import collections
print(isinstance(str, collections.Iterable)) // True
迭代器:从第一个元素开始,通过下一个()函数往后进行遍历
判断是否为迭代器的依据,以字符串为例
str = "abc"
# 1. 可以用next()则是迭代器
iterator.next()
# 2. collections.Iterator判断
import collections
i = iter(str) //iter可以将可迭代对象转换为迭代器
print(i) // 即迭代器
print(isinstance(str,collections.Iterator)) //False
print(isinstance(i,collections.Iterator)) //True
由此可知 str为可迭代对象,但不是迭代器
注意:迭代器可以可迭代对象,可以for in
举个笼统但不完全正确的例子:一排小朋友排好,小朋友可以一个个遍历,所以整排是可迭代对象,然后小朋友们要一个个进去医务室进行体检,每执行一次next(),就有一个小朋友进入,医务室相当于迭代器。
迭代器的作用:
1.迭代器只有迭代到某个元素时才会处理该元素,没迭代到则不存在,迭代过的就不存在,所以可以提高性能和内存
2.由于可迭代对象访问方式可能不同,将可迭代对象转化为迭代器之后,可以统一访问
注意:当迭代器迭代完,不能继续迭代,若要迭代则要重新创建迭代器