自定义迭代器
程序员文章站
2022-03-15 19:36:26
...
from collections import Iterable
class StudentList(object):
# 构造方法 __init__ 默认先创建一个保存数据的列表
def __init__(self):
# 创建一个空的list列表,保存的实例属性items中
self.items = list()
# __iter__方法
def __iter__(self):
# 返回迭代器
stu_iterator = StudentIterator(self.items)
return stu_iterator
# addItem 方法,用于向对象中添加数据
def addItem(self, item):
# 把值追加到列表中
self.items.append(item)
print(self.items)
创建迭代器
1) 类中必须有 iter 方法
2) 类中必须有 next 方法
class StudentIterator(object):
def __init__(self, items):
# 保存要迭代的数据到 迭代器
self.items = items
# 定义变量,保存当前迭代的位置
self.current_index = 0
def __iter__(self):
return self
# 当调用 next(迭代器)
def __next__(self):
# 判断当前位置是否到了末尾
if self.current_index < len(self.items):
# 获取下标对应的元素值
item = self.items[self.current_index]
# 索引位置+1
self.current_index += 1
return item
else:
# 停止迭代
raise StopIteration
if name == ‘main’:
# 实例化对象
stu_list = StudentList()
# 添加值,保存到对象
stu_list.addItem("a")
stu_list.addItem("b")
stu_list.addItem("c")
# 判断对象是否可迭代
res = isinstance(stu_list, Iterable)
print(res)
#
# for value in stu_list:
# print(value)
# 获取可迭代对象的迭代器
stu_iterator = iter(stu_list)
# 获取值 __next__
value = next(stu_iterator)
print(value)
value = next(stu_iterator)
print(value)
上一篇: 散列 - 链表散列实现字典