zoukankan      html  css  js  c++  java
  • 多任务-python实现-迭代器相关(2.1.12)

    @

    1.需求

    类比
    早上起来吃包子
    1.买1年的包子,放在冰箱,每天拿一个
    2.每天下楼买一个包子吃

    1会占据大量空间,2满足需求不占大量空间
    所以迭代器奥比返回列表的方式节省大量内存空间
    迭代器最终存储的是生成这个数据的方式而不是数据的结果

    2.斐波那契数列演示

    代码实现

    
    class Fibonacci(object):
        def __init__(self,all_num):
            self.all_num = all_num
            self.a = 0
            self.b = 1
    
        def __iter__(self):
            """如果想要一个对象称为一个 可以迭代的对象 可以使用for, 那么必须实现__iter__方法"""
            return self
    
        def __next__(self):
            if self.all_num > 0:
                self.a, self.b = self.b, self.a + self.b
                self.all_num -=1
                return self.a
            else:
                raise  StopIteration
    
    
    
    def Ite():
        a = Fibonacci(10)
        for i in a:
            print(i)
    
    
    
    def normal():
        nums  = list()
        a= 0
        b = 1
        for i in range(10):
            nums.append(a)
            a,b = b,a+b
        for i in nums:
            print(i)
    
    
    if __name__ == '__main__':
        # normal()
        Ite()
    

    其中Ite方法为迭代器实现
    normal方法为普通实现

    3.并不是只有for循环能接收可迭代数据类型,list,tuple也可以

    l = list(Fibonacci(15))
    tp = tuple(Fibonacci(6))
    

    稍微注意下就行

  • 相关阅读:
    Java 标识符
    Java 关键字详解
    Java 语言的主要特性
    redis学习
    垃圾回收
    JVM内存结构
    sql总结(DML)
    sql总结(DDL)
    加密算法
    《数据结构》 定长顺序串常用操作代码集合
  • 原文地址:https://www.cnblogs.com/simon-idea/p/11358290.html
Copyright © 2011-2022 走看看