迭代,很熟悉有很陌生,猛地一说,好多人摸不到头脑,但是在编程语言中,是常见的一种说法。今天我们就走进迭代,讲述一下迭代以及迭代器的用法。
迭代定义:通过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构造方法将迭代器转化为列表。
看下面例子。
以上就是今天要说的迭代以及迭代器的用法的定义,如果还有不清楚的小伙伴们可以给小编留言。
提前透露一下,我们明天要说的内容时关于生成器的,感兴趣的小伙伴欢迎继续关注。