多任务-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))

稍微注意下就行

posted @ 2019-08-15 15:35  BothSavage  阅读(122)  评论(0编辑  收藏  举报