首页 > 编程语言 >Python: Iterator Pattern

Python: Iterator Pattern

时间:2022-10-23 23:55:19浏览次数:33  
标签:__ None return Iterator Python Pattern self current def

DuIterator.py

# 迭代器模式 Iterator Pattern

# Doubly Linked List
class Node(object):
    def __init__(self, value, nextNode, prevNode):
        self.value = value
        self.next = nextNode
        self.prev = prevNode


class DoublyLinkedList(object):
    def __init__(self):
        self.size = 0
        self.head = None
        self.tail = None

    def isEmpty(self):
        return self.head is None

    def addLast(self, value):
        if self.isEmpty():
            tmp = Node(value, None, None)
            self.head = tmp
            self.tail = tmp
            self.size += 1
            return

        self.tail.next = Node(value, None, self.tail)
        self.tail = self.tail.next
        self.size += 1

    def getIterator(self):
        return DLinkIterator(self.head)

    def getReverseIterator(self):
        return DLinkReverseIterator(self.tail)

# Forward Iterator:
class DLinkIterator(object):
   def __init__(self, startNode):
       self.current = startNode

   def hasNext(self):
       return self.current != None

   def next(self):
       if not self.hasNext():
           raise IndexError
       val = self.current.value
       self.current = self.current.next
       return val
# Reverse Iterator:
class DLinkReverseIterator(object):
   def __init__(self, startNode):
       self.current = startNode

   def hasNext(self):
       return self.current != None

   def next(self):
       if not self.hasNext():
           raise IndexError
       val = self.current.value
       self.current = self.current.prev
       return val

  

main.py 调用:

# 迭代器模式 Iterator Pattern
myList = DuIterator.DoublyLinkedList()

myList.addLast("Hello")
myList.addLast("Geovin Du")
myList.addLast("Goodbye")
myList.addLast("涂聚文")

# Iterate the list forwards:
forwardIter = myList.getIterator()

while forwardIter.hasNext():
 print(forwardIter.next())
 print("\n")

  

输出:

Hello


Geovin Du


Goodbye


涂聚文

  

标签:__,None,return,Iterator,Python,Pattern,self,current,def
From: https://www.cnblogs.com/geovindu/p/16820099.html

相关文章

  • Python入门练习(Question4)
    年份天数题目输入某年某月某日,判断这一天是这一年的第几天?特殊情况,闰年时需考虑二月多加一天解答year=int(input("inputyear:"))month=int(input("inputmont......
  • python中format的详解
    format是字符串内嵌的一个方法,用于格式化字符串。以大括号{}来标明被替换的字符串。它通过{}和:来代替%。1、基本用法1.按照{}的顺序依次匹配括号中的值s="{}isa{}......
  • Python入门练习(Question3)
    完全平方数题目一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?解答defsolution3():n=10whileTrue:n+=1......
  • 十分钟带你搞懂Python获取网页信息
    Python爬虫的用处就不需要我多说了吧,今天就来带大家十分钟快速学会Python是如何爬取网页信息的,当然大家在爬取目标网页内容之前一定要遵守该网页的爬虫规则,以免带来不必要的......
  • python学习第四周总结
    异常常见类型异常处理语法结构异常补充处理异常处理实战应用生成器对象自定义生成器range()功能yield冷门用法生成器表达式模块简介模块的分......
  • hands-on design patterns with c++ 电子书 pdf
    作者:FedorGPikus出版社:PacktPublishing-ebooksAccount副标题:MastertheDesignPatternstocreaterobust,reusableandeasilymaintainableapps 链接:h......
  • python控制台颜色输出设置
    python控制台颜色输出设置控制台输出内容的颜色有前景色与背景色控制台的展示效果有限,并不能像前端一样炫酷,只能做一些简单的设置原理python终端的字符颜色是用转义序......
  • 写给小朋友的Python课
    目录 基本常识什么是Python?python是众多编程语言中的一种。为什么python会在这个时代流行?python简单、易学、表示方式更像人类的表示方式、符合人类的思维方式;另外,它......
  • 异常处理与python内置模块
    异常常见类型syntaxError语法错误NameError当你引用了变量、模块、类、函数或代码中没有定义的其他名称时,将引发NameErrorIndexError当你尝试从序列(如列表或......
  • Python最速下降法实例
    最速下降法的实现需要通过符号计算。首先笔算一步如下,然后通过程序验证: python程序如下,需要pipinstallsympy:importnumpyasnpfromsympyimport*importmath......