什么是迭代器?
迭代器是访问集合内元素的一种方式,一般用力啊遍历数据,迭代器和以下标的访问方式不一样,迭代器是不能返回的,迭代器提供了一种惰性方式数据的方式,迭代器不支持切片
list 是一个可迭代对象,却不是迭代器。
自定义实现一个迭代器
from collections.abc import Iterator
class Company(object):
"""docstring for Company"""
def __init__(self, employee_list):
self.employee = employee_list
def __iter__(self):
return MyIterator(self.employee)
class MyIterator(Iterator):
def __init__(self, employee_list):
self.iter_list = employee_list
self.index = 0
def __next__(self):
#真正返回迭代值的逻辑
try:
word = self.iter_list[self.index]
except IndexError:
raise StopIteration
self.index += 1
return word
if __name__ == '__main__':
company = Company(['tom', 'bob', 'jane'])
my_itor = iter(company)
while True:
try:
print(next(my_itor))
except StopIteration:
pass