迭代器:
迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
可迭代对象:
可以for循环遍历直接作用的数据类型,如:
一种是:列表(list);元组(tuple);字典(dict);集合(set);字符串(str)等。
一种是 generator ,包括生成器和带 yield 的generator function。
可以 for 循环的对象统称为可迭代对象: Iterable 。
判断是否可以迭代
可以用isinstance() ,如:
from collections import Iterable
print(isinstance((x for x in range(10)),Iterable))
——Truefrom collections import Iterable
print(isinstance([],Iterable))
——True- from collections import Iterable
print(isinstance(‘abc’,Iterable))
——True
迭代器
1)可迭代对象包含迭代器。
2)如果一个对象拥有iter方法,其是可迭代对象;如果一个对象拥有next方法,其是迭代器。
3)定义可迭代对象,必须实现iter方法;定义迭代器,必须实现iter和next方法。
举例:
class MyIter(object):
”’实现迭代器”’
def init(self,mylist):
self.mylist = mylist
self.current_index = 0
def __next__(self):
if self.current_index < self.mylist:
self.current_index += 1
return self.current_index-1
else:
raise StopIteration
# 一个实现了iter方法或者next的方法的对象,叫迭代器
def __iter__(self):
return self
MyIter1=MyIter(3)
for i in MyIter1:
print(i)