【Python】一直没搞懂迭代器是什么。。

#王者杯·14天创作挑战营·第1期#

迭代器,有两个概念
可迭代对象 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sonetto1999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值