1. 迭代器
1.1 可迭代对象
可迭代对象指的是实现了 __iter__ 方法的对象,可以被 for 循环遍历的容器,比如一个列表,自定义的链表等。使用 iter() 方法获取它的迭代对象 (可以理解为链表的指针)。
1.2 迭代器
迭代器是指实现了 __iter__ 和 __next__ 方法的对象。__iter__ 返回它本身,确保每个单独的节点都是可以被迭代的,满足链表可以从第 n 个元素开始访问的需求;__next__ 返回它的下一个节点,如果已经遍历完毕则抛出 StopIteration 异常。
# 实现了__iter__方法,是一个可迭代对象,可以理解为是一个整的链表,但此时还不能单独访问其中的元素
class Node:
def __init__(self, data):
self.data = data
self.next: Node | None = None
def __iter__(self):
return NodeIter(self)
# 是迭代器对象,可以理解为指向链表首元素的指针,通过这个指针遍历所有的链表元素
class NodeIter:
def __init__(self, node: Node = None):
self.current = node
def __iter__(self):
return self
def __next__(self):
if self.current is None:
raise StopIteration
else:
node = self.current
self.current = .current.
node

