自定义迭代器对象: 在类里面定义__iter__和__next__方法创建的对象就是迭代器对象
iter()函数与next()函数
- iter函数: 获取可迭代对象的迭代器,会调用可迭代对象身上的__iter__方法
- next函数: 获取迭代器中下一个值,会调用迭代器对象身上的__next__方法
for循环的本质
遍历的是可迭代对象
迭代器的作用就是是记录当前数据的位置以便获取下一个位置的值
# 自定义迭代器对象: 在类里面定义__iter__和__next__方法创建的对象就是迭代器对象
class MyIterator(object):
def __init__(self, my_list):
self.my_list = my_list
# 记录当前获取数据的下标
self.current_index = 0
# 判断当前对象是否是迭代器
result = isinstance(self, Iterator)
print("MyIterator创建的对象是否是迭代器:", result)
def __iter__(self):
return self
# 获取迭代器中下一个值
def __next__(self):
if self.current_index < len(self.my_list):
self.current_index += 1
return self.my_list[self.current_index - 1]
else:
# 数据取完了,需要抛出一个停止迭代的异常
raise StopIteration