`

创建自己的迭代器

 
阅读更多
# -*- coding: utf-8 -*-

'''
创建自己的迭代器类,需要实现两个方法:
1. __iter__: The iter method simply returns a reference to the object itself and is always implemented to do so.
2. __next__: 
'''

class _BagIterator:
    
    def __init__(self, theList):
        self._bagItems = theList
        self._curItem = 0

    def __iter__(self):
        return self

    def __next__(self):
        if self._curItem < len(self._bagItems):
            item = self._bagItems[self._curItem]
            self._curItem += 1
            return item
        else:
            raise StopIteration

分享到:
评论

相关推荐

    迭代器模式Demo

    在实际开发中,我们经常结合其他设计模式一起使用迭代器,例如工厂模式用于创建迭代器,装饰器模式用于在运行时添加新的遍历行为等。理解并熟练运用迭代器模式对于提升代码质量和可维护性具有重要意义。

    java迭代器模式实现正反向遍历

    在给定的代码示例中,通过创建自定义的迭代器类,实现了对包含10个数字的集合进行正向和反向遍历的功能。 ### 核心概念解析 #### 1. 迭代器接口(Iterator) 迭代器接口定义了访问和遍历聚合元素的方法。在这个...

    C++学习篇——C++ STL中迭代器介绍

    一个STL容器类可能为了使用一个特定类型的数据而创建一个迭代器。作为指针,必须能够使用*操作符类获取数据。你还可以使用其他数学操作符如++。典型的,++操作符用来递增迭代器,以访问容器中的下一个对象。如果迭代...

    迭代器模式代码示例

    4. **具体聚合对象(Concrete Aggregate)**:实现聚合对象接口,维护一个元素集合,并提供创建具体迭代器的实例。 让我们通过一个简单的Java示例来理解迭代器模式: ```java // 聚合对象接口 interface ...

    C++ STL 迭代器 入门

    // 创建一个迭代器,用于遍历MyFriends容器 // 向容器中添加元素 MyFriends.push_back(""); // 添加一个空字符串 MyFriends.push_back("张三"); // 添加名字"张三" MyFriends.push_front("李四"); // 在容器...

    迭代器模式demo

    1. **聚合对象(Aggregate)**:包含一组元素,提供创建迭代器的接口。 2. **迭代器(Iterator)**:定义遍历元素的接口,如`hasNext()`用于检查是否还有更多元素,`next()`用于返回下一个元素。 3. **具体迭代器...

    迭代器Iterator.txt

    - **抽象容器(Aggregate)**:提供创建一个迭代器对象的方法。 - **具体容器(Concrete Aggregate)**:实现抽象容器接口中的方法,并返回一个具体迭代器的对象。 ### 二、Java集合框架中的迭代器模式实现 #### 1...

    迭代器的例子

    描述中的"迭代器的例子"很可能是一个编程挑战,解决者可能创建了一个自定义数据结构,并实现了自己的迭代器来遍历其中的元素。这种做法有助于保持数据结构的封装性,同时提供了灵活的遍历方式。 例如,我们可以创建...

    设计模式之迭代器模式(Iterator)

    4. **具体聚合类**:实现了聚合接口,存储并管理元素对象,同时提供创建迭代器的方法。 迭代器模式的优点包括: 1. **封装性**:隐藏了集合的内部结构,只暴露必要的遍历操作。 2. **灵活性**:允许在不改变聚合类...

    数据结构 模板与迭代器

    迭代器分为五种类型:输入迭代器、输出迭代器、前向迭代器、双向迭代器和随机访问迭代器。 - **输入迭代器**:只能向前移动,且只支持读取操作。不能修改其指向的值。 示例:`std::istream_iterator` - **输出...

    23钟设计模式之迭代器模式模式

    之后,我们调用聚合对象的创建迭代器方法来获取迭代器,并使用该迭代器遍历并打印出符合条件的House对象名称。 ### 迭代器模式的应用场景 迭代器模式的应用场景十分广泛,具体包括: - **数据库查询**:在数据库...

    Android迭代器模式demo

    1. **聚合类(Aggregate)**:包含一组元素,并定义一个接口用于创建迭代器实例。在Android中,这个角色通常由实现了某种集合接口(如ArrayList、LinkedList等)的类扮演。 2. **迭代器(Iterator)**:迭代器接口...

    设计模式之迭代器模式

    聚合对象负责管理自己的元素,并提供一个接口来创建迭代器实例。 2. **迭代器(Iterator)**:迭代器接口定义了遍历聚合对象中元素的方法,如`hasNext()`用于检查是否还有更多元素,`next()`用于返回下一个元素。...

    设计模式的迭代器模式的例子

    聚合对象负责管理自己的元素,并提供一个创建迭代器的接口。 2. **迭代器(Iterator)**:定义了访问聚合对象元素的接口,包括遍历下一个元素、判断是否还有下一个元素以及获取当前元素等功能。迭代器对象理解如何...

    设计模式(C#)之迭代器模式(Iterator Pattern)

    - **具体聚合(ConcreteAggregate)**:实现了聚合对象接口,维护元素集合并提供创建具体迭代器的实现。 ### 3. C#中的实现 在C#中,`System.Collections`命名空间提供了多种内置的迭代器类型,如`IEnumerator`和`...

    迭代器和生成器的区别

    迭代器和生成器的区别 迭代是一种遍历的过程,即通过for in循环语句依次从容器中取出数据的过程。判断一个对象是否可迭代可以使用isinstance()函数,如果返回结果为true,则该对象是可迭代的。 迭代器是一个可以...

    迭代器设计模式示例

    它提供一个创建迭代器的接口。 2. **迭代器**(Iterator):定义访问聚合对象元素的接口,通常包括`hasNext()`用于检查是否还有更多元素,以及`next()`用于获取下一个元素。 3. **具体迭代器**(Concrete Iterator)...

    设计模式-迭代器模式(讲解及其实现代码)

    1. **聚合对象(Aggregate)**:包含一组对象,提供创建迭代器的接口。 2. **迭代器(Iterator)**:负责遍历聚合对象中的元素,它知道如何访问聚合对象的下一个元素,并且维护当前访问位置。 3. **具体迭代器...

Global site tag (gtag.js) - Google Analytics