迭代器,有两个概念
可迭代对象 iterable
迭代器 iterator
for loop 与 迭代器
for loop
即 for 循环。
iterable
- 可迭代对象:可以一个一个的返回它的成员,
List\Dict\Tuple\str
它们都是iterable
- 可以说它是一个 container ,有能力产生一个
iterator
因为其内部实现了__iter__
方法 - 可在
for loop
中被使用
lst = [1, 3,5]
for i in lst:
print(i)
iterator
- 迭代器,是一个表示数据流的对象
- 内部实现了
__next__
方法,你可以使用next函数不断的从这个对象里面获取新的数据 - 它是有状态的,也就是说它需要知道现在数到哪了
- 在
for loop
一个iterable
,实际调用了__iter__
拿到了iterator
,在用iterator
.next方法去迭代一个个成员。
让我们写一个链表来理解这一切:
……
不想开会员?
免VIP免积分下载本文全文PDF 点击这里→: 【免费】【Python编程】深入解析迭代器与可迭代对象-CSDN文库
怎么自己写一个 链表
iterator、iterable
class NodeIter: # 实现了next,是iterator
def __init__(self, node):
self.curr_node = node
def __next__(self): # 实现了next,是iterator
if self.curr_node is None:
raise StopIteration
node, self.curr_node = self.curr_node, self.curr_node.next # 解包赋值
r