当前位置: 移动技术网 > IT编程>脚本编程>Python > Python3面向对象--9.迭代器模式(1)迭代器

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

2020年07月20日  | 移动技术网IT编程  | 我要评论

迭代器:

设计模式的术语:拥有一个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

本文地址:https://blog.csdn.net/w1234567465/article/details/107425317

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网