Python3面向对象--9.迭代器模式(1)迭代器

迭代器:

设计模式的术语:拥有一个next()和done()方法的对象。

1.python中:迭代是一个特征,任意一定义了__ next __就时一个迭代器

2.迭代:从某个地方(比如一个列表)取出一个元素的过程,当我们使用一个循环来遍历某个东西时,这个过程本身叫做迭代。

3.collections.abc模块抽象基类Iterator定义了python中的迭代器协议
4. __iter __ 函数:实现Iterable接口,任何提供了iter方法的类都是可以迭代的,这一方法放回一个iterator实例,并能够覆盖类中的所有元素。

5.迭代方法 :__ next __使得for循环以及其他支持迭代的特征可以调用从序列中获取新元素。
这一方法通过内置的next(iterator)访问。当遍历结束时,迭代器协议会抛出一个StopIteration异常。

6.访问迭代器中元素:for item in iterrtor 或者while

7.for 循环完全相同与迭代器协议

class Capitallterable:
    def __init__(self,string):
        self.string = string

    def __iter__(self):
        return Capitallterablor(self.string)
    #实现Iterrable接口,返回自己

class Capitallterablor:
    def __init__(self,string):
        self.words = [w.capitalize() for w in string.split()]
        self.index = 0

    def __next__(self):
        '使得for循环可以调用来从序列(以及其他支持迭代的特征)中获取新的元素'
        if self.index == len(self.words):
            raise StopIteration()

        word = self.words[self.index]
        self.index += 1
        return word

    def __iter__(self):
        return self

#c测试
iterable=Capitallterable('the quick browen for jumps over lazy dog')
iterator=iter(iterable)
#用while 访问
while True:
    try:
        print(next(iterator))
    except StopIteration:
        break
print('\n')

#测试 用for in 访问
for i in iterable:
     print(i)

The
Quick
Browen
For
Jumps
Over
Lazy
Dog


The
Quick
Browen
For
Jumps
Over
Lazy
Dog

Process finished with exit code 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值