• 迭代器模式


    一、内容

    提供一种方法顺序访问一个聚合函数一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示

    二、实现方法

    迭代器内部实现:__iter__、__next__方法

    三、代码实现

    class LinkList:
        """链表 头结点保存链表的长度"""
        class Node:
            def __init__(self, item=None):
                self.item = item
                self.next = None
    
        class LinkListIterator:
            def __init__(self, node):
                self.node = node
            def __next__(self):
                if self.node:
                    cur_node = self.node
                    self.node = cur_node.next
                    return cur_node.item
                else:
                    raise StopIteration
            def __iter__(self):
                return self
    
        def __init__(self, iterable=None):
            self.head = LinkList.Node(0)
            self.tail = self.head
            self.extend(iterable)
    
        def append(self, obj):
            s = LinkList.Node(obj)
            self.tail.next = s
            self.tail = s
    
        def extend(self, iterable):
            for obj in iterable:
                self.append(obj)
            self.head.item += len(iterable)
    
        def __iter__(self):
            return self.LinkListIterator(self.head.next)
    
        def __len__(self):
            return self.head.item
    
        def __str__(self):
            return "<<"+", ".join(map(str, self))+">>"
    
    
    
    li = [i for i in range(100)]
    print(li)
    lk = LinkList(li)
    # for i in lk:
    #     print(i)
    
    print(lk)
    # print(len(lk))
  • 相关阅读:
    处理流之转换流
    处理流之缓冲流 buffered
    java学习笔记 字符流Reader与Writer
    java学习笔记 OutputStream与InputStream
    java学习笔记 Map接口
    java 学习笔记 Iterator 迭代器
    java学习笔记 genenic 范形
    应急响应介绍
    安全之红蓝对抗简介
    密码学基础下篇
  • 原文地址:https://www.cnblogs.com/morgana/p/8496303.html
Copyright © 2020-2023  润新知