自定义列表和迭代器
实现:创建并使用for遍历自定义列表
MyList,自定义列表类
1.__init__():初始化方法
2.__iter__():对外提供迭代器
3.addItem():添加元素
MyIterator,自定义迭代器类
1.__init__():初始化方法
2.__iter__():迭代器方法
3.__next__():取值
# 自定义列表类
class MyList(object):
def __init__(self):
self.items = []
# 对外提供迭代器
def __iter__(self):
# 创建并返回迭代器对象
mylist_iterator = MyIterator(self.items)
return mylist_iterator
# 添加数据
def addItem(self,item):
self.items.append(item)
print(self.items)
# 自定义迭代器类
class MyIterator(object):
def __init__(self,items):
# 接收可迭代对象传递的items
self.items = items
# 记录索引位置
self.current_index = 0
# 迭代器方法
def __iter__(self):
return self
# 取值
# 执行 next(iterator) 时会调用此方法
def __next__(self):
# 判断索引是否在列表范围内
if self.current_index < len(self.items):
# 获取索引对应的元素
data = self.items[self.current_index]
# 更新索引位置,返回取到的数据
self.current_index += 1
return data
else:
# 索引超出列表范围时抛出异常
raise StopIteration
if __name__ == '__main__':
# 创建自定义列表对象
mylist = MyList()
mylist.addItem('a')
mylist.addItem('b')
mylist.addItem('c')
# # 1.通过 iter(iterable) 获取迭代器
# # 2.通过 next() 取值
# # 3.捕获异常
# for i in mylist:
# print(i)
mylist_iterator = iter(mylist)
print(next(mylist_iterator))
['a']
['a', 'b']
['a', 'b', 'c']
a