学会迭代和迭代器,让你的程序更省内存

迭代,很熟悉有很陌生,猛地一说,好多人摸不到头脑,但是在编程语言中,是常见的一种说法。今天我们就走进迭代,讲述一下迭代以及迭代器的用法。

迭代定义:通过for 循环遍历列表,元组,我们就称之为迭代!

迭代器定义:可以被next()函数调用并不断返回下一个值的对象。

为了统一说法,我们可以按照下面来定义;

凡是可作用于for循环的对象都称为迭代。

凡是可作用于next()函数的对象成为迭代器。

学会迭代和迭代器,让你的程序更省内存

区别:集合类型list ,dict, str 是迭代但不是迭代器!

上文中说到定义区别,那么我们什么时候用,怎么用,用它有什么好处呢?我们继续。

迭代器,是具有next方法(新版__next__方法)的对象,这个方法在调用的时候不需要任何参数。在调用next方法时,迭代器返回它下一个值,否则会引发stopiteration异常。

__iter__方法:返回一个迭代器。 一个实现了__iter__方法的对象时可迭代的,一个实现了next方法的对象则是迭代器。

我们用下面的例子来讲一下迭代器。

学会迭代和迭代器,让你的程序更省内存

首先创建一个名称叫做Fibs的迭代器。(我们这用的列表就是斐波那契列表。)如果对斐波那契有不清楚的可以点开下面链接看一下。

(小编在这里卖个萌:本来加上链接的,但是不确定为什么总是被认为外部链接,所以就删除了。由需要链接的小伙伴可以留言给我。希望大家不要拿鸡蛋砸我。吼!吼!吼!)

学会迭代和迭代器,让你的程序更省内存

fibs=Fibs() 其次产生一个fibs对象,注:以前产生了一个Fibs对象,因为有next 方法,所以返回的Fibs迭代器。

for f in fibs:

if f >1000:

print (f)

break

将迭代器Fibs应用在for循环中,比如去寻找斐波那契数列中比1000大的数中的最小数。因为设置了break,所以循环停止了,否则会一直循环下去。

从迭代器得到序列。

迭代器可用各种构造方法显式的转化为序列,例:使list构造方法将迭代器转化为列表。

看下面例子。

学会迭代和迭代器,让你的程序更省内存

以上就是今天要说的迭代以及迭代器的用法的定义,如果还有不清楚的小伙伴们可以给小编留言。

提前透露一下,我们明天要说的内容时关于生成器的,感兴趣的小伙伴欢迎继续关注。


分享到:


相關文章: