Python3面向对象--迭代器模式迭代器
程序员文章站
2022-08-18 08:18:06
迭代器:设计模式的术语:拥有一个next()和done()方法的对象。1.python中:迭代是一个特征,任意一定义了__ next __就时一个迭代器2.迭代:从某个地方(比如一个列表)取出一个元素的过程,当我们使用一个循环来遍历某个东西时,这个过程本身叫做迭代。3.collections.abc模块抽象基类Iterator定义了python中的迭代器协议4. __iter __ 函数:实现Iterable接口,任何提供了iter方法的类都是可以迭代的,这一方法放回一个iterator实例,...
迭代器:
设计模式的术语:拥有一个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
上一篇: conda包管理工具
下一篇: 二维数组查找,替换空格,从尾到头打印列表