Python语言特性:迭代器

本文探讨了Python中的迭代器,包括List列表的遍历原理,重点介绍了__iter__、__next__方法以及collections.abc.Iterable的作用。通过迭代器,可以实现容器的遍历功能,并通过yield关键字创建生成器。文章还讨论了迭代器在父子函数交互中的应用,以及如何通过send方法传递参数,实现类似协程的功能。最后,提到了如何通过闭包模拟迭代器。
摘要由CSDN通过智能技术生成

List列表

Python中如:List、Set、dict等容器都支持元素遍历操作,这些遍历操作中都会采用for x in list类似访问形式。这些访问形式的实现就采用了迭代器,实现迭代器可以显示使用yield关键字产生,也可以采用类重载默认方法__iter__函数的形式来实现,如未实现该方法则判断是否重载__getitem__方法。

__iter__与__next__

Iterable接口有一个派生类:Iterator迭代器,前者只有一个方法__iter__,后者则多了一个方法__next__,Iterator类用于实现迭代器模式或也可直接重载__iter__方法。

class Sentence:

    def __init__(self, text):
        self.text = text

    def __getitem__(self, index):
        return self.text[index]

    def __len__(self):
        return len(self.text)

    def __repr__(self):
        return 'Sentence(%s)' % reprlib.repr(self.text)

    def __iter__(self):
        """
        print("__iter__")
        for word in self.text:
            yield word
        """
        return SentenceIterator(self.text)


class
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值