当前位置: 首页 > 科技观察

看懂这5道题,赢取Python迭代器!

时间:2023-03-22 15:16:23 科技观察

本题的写作思路,由几个问题组成,逐步探讨迭代器的价值、使用方法,以及如何将其转化为自己的武器并在日常Python中实际使用。第一个问题:什么是迭代器?一个迭代器,英文Iterator,首先是一个对象,其次,它是一种访问可迭代序列(Iterable)的方法。通常它从序列的第一个元素开始访问,直到访问完所有元素才结束。迭代器也是一个特殊的对象,特殊的是它必须实现两个方法:__iter__和__next__。第二个问题:为什么会有迭代器?迭代器最重要的价值之一:节省内存,这在小数据量下是微不足道的。但是当数据量很大或者程序需要高性能时,它的价值就凸显出来了。第三个问题:迭代器是如何节省内存的?我只知道使用迭代器可以节省内存,但不知道如何使用它来节省内存。下面就来回答一下这个问题。首先创建一个列表:In[1]:a=[1,3,5,9,10]其次,列表中的每个元素+1,创建一个新列表In[2]:a1=[i+1foriina]in依次打印a1中的每个元素:In[8]:foriina1:...:print(i)上面的操作等价于:a1=[]foriina:a1.append(i+1)foriina1:print(i)的空间的复杂度是O(n),其中n是列表a中元素的个数。但是,使用迭代器实现上面的element+1并打印出来,空间复杂度是多少呢?ait=(i+1foriina)#得到生成器,也是一个特殊的迭代器foriinait:print(i)以上操作等价于:foriina:print(i+1)不需要额外的空间,所以空间复杂度为使用迭代器加1并打印是O(1)。结论:迭代器更节省空间!第四个问题:如何自定义一个Iterator?如上所述,迭代器对象必须实现两个方法。更具体地说,我们演示了如何自定义迭代器。自定义一个迭代器实现斐波那契数列:#斐波那契数列classFabs():def__init__(self,max):self.max=maxself.n,self.a,self.b=0,0,1#定义__iter__方法def__iter__(self):returnsself#定义__next__方法def__next__(self):ifself.n

最新推荐
猜你喜欢