Python进阶系列连载(4)——迭代器

迭代

迭代:就像交通工具的发展,越来越好,越来越方便,朝着更好方向发展!【或者说常见的软件版本迭代更新】

让我想起,经常有抽奖类的活动口号是:搏一搏,单车变摩托~

有需要Python学习资料的小伙伴吗?小编整理【一套Python资料、源码和PDF】,感兴趣者可以加学习群:548377875,反正闲着也是闲着呢,不如学点东西啦~~

可迭代对象

可迭代对象:在之前学习的基础上,可以简单的理解为可以用for循环遍历的,如学过的list  tuple  dict  set  str

判断一个对象是否是迭代器:

除了写for循环试试,我们还有专业的手段~

我们可以将数据类型和是否为可迭代对象比较来判断是否是可以迭代~

发现整型是不能迭代的~

 

迭代器

迭代器:一定是可迭代对象,拥有next()方法

next()方法可以获取迭代器的下一个元素

我们试着对 list 使用 next()方法,发现抛出异常,提示list不是一个迭代器!

所以可迭代对象不一定是迭代器!

我们导入Iterator模块

使用iter方法将list转为了一个迭代器!

然后我们使用next()获取迭代器下一个对象:

当获取完之后,再次获取下一个会抛出异常!

小明:老湿,你说这个迭代器有啥用啊,感觉华而不实!

额,小明啊,迭代器是有很多优点的,比如,我想访问集合中一个元素,你会怎么做?

小明:看我的!

小明啊,如果我要获取一个集合中的元素呢?

小明:这个。。这个。。集合没有索引啊,你不是难为我么?!

所以,这不就是迭代器的优点了么!

看好了:

小明:老湿,在迭代器集合中,如果我想获取前一个元素怎么办?

小明啊,这个问题问得好,这也是迭代器的特点,他只能往后next(),不能回退

除此之外,迭代器还有一大优点是不要求事先准备好整个迭代过程中所有的元素

迭代器仅仅在迭代到某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁

这个特点使得它特别适合用于遍历一些巨大的或是无限的集合,比如几个G的文件

所以有点像内存,我们把正在运行的程序放进内存,运行完就突出内存,每次只放正在运行的进入

充分体现了局部性原理~

小明:我好像懂了!小红,你还不太懂吧,放学我请你吃饭,给你讲讲吧【自信脸】

小红:emmm,我早懂了【高冷脸】

有需要Python学习资料的小伙伴吗?小编整理【一套Python资料、源码和PDF】,感兴趣者可以加学习群:548377875,反正闲着也是闲着呢,不如学点东西啦~~

猜你喜欢

转载自blog.csdn.net/qq_40925239/article/details/82793632