迭代器只不过是一个实现迭代器协议的容器对象。它基于两个方法:
(1) next 返回容器的下一个项目
(2) __iter__ 返回迭代器本身
迭代器可以通过使用一个iter内建函数和一个序列来创建:
>>> i = iter('abc')
>>> i.next()
'a'
>>> i.next()
'b'
>>> i.next()
'c'
>>> i.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
>>>
当序列遍历完时,将抛出一个StopIteration异常。这将使迭代器与循环兼容,因为它们
将捕获这个异常以停止循环。
要创建定制的迭代器,可以编写一个具有next方法的类,只要该类能够提供返回迭代器实
例的__iter__特殊方法。
>>> class MyIterator(object):
... def __init__(self, step):
... self.step = step
... def next(self):
... """Returns the next element."""
... if self.step == 0:
... raise StopIteration
... self.step -= 1
... return self.step
... def __iter__(self):
... """Returns the iterator itself."""
... return self
...
>>> for e1 in MyIterator(4):
... print e1
...
3
2
1
0
分享到:
相关推荐
在Java编程语言中,迭代器模式(Iterator Pattern)是一种常用的设计模式,用于顺序访问集合对象中的元素,而无需暴露其底层表示。这种模式提供了一种方法来访问一个聚合对象的元素,而无需暴露该对象的内部结构。在...
迭代器模式是软件设计模式中的一种行为模式,它在编程中扮演着重要的角色,尤其是在处理集合数据时。迭代器模式的核心思想是提供一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。这种模式使得用户可以在不...
迭代器模式是软件设计模式中的一种行为模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,迭代器模式被广泛应用于容器类,如ArrayList、LinkedList等,使得我们可以方便...
迭代器模式是一种设计模式,它在软件工程中扮演着重要的角色,特别是在处理集合或容器类对象的遍历操作时。这种模式提供了一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,...
迭代器模式是软件设计模式中的一种行为模式,它在C#等面向对象编程语言中有着广泛的应用。这个模式的主要目标是允许用户遍历一个聚合对象(如数组、集合或列表)的所有元素,而无需了解底层的实现细节。下面将详细...
迭代器模式是一种行为设计模式,主要目的是在不暴露集合内部结构的情况下,允许外部代码遍历集合的所有元素。这种模式将遍历操作从集合类中分离出来,实现了数据结构和遍历机制的解耦。在大多数编程语言中,迭代器...