技术|Python从零开始系列连载(十九)——迭代器

可迭代对象

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

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

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

技术|Python从零开始系列连载(十九)——迭代器

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

发现整型是不能迭代的~

迭代器

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

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

技术|Python从零开始系列连载(十九)——迭代器

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

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

技术|Python从零开始系列连载(十九)——迭代器

我们导入Iterator模块

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

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

技术|Python从零开始系列连载(十九)——迭代器

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

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

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

小明:看我的!

技术|Python从零开始系列连载(十九)——迭代器

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

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

技术|Python从零开始系列连载(十九)——迭代器

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

看好了:

技术|Python从零开始系列连载(十九)——迭代器

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

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

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

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

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

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

充分体现了局部性原理~

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

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

今天作业:

1.自己创建list tuple dict set str int float bool 类型数据,然后判断是否是可迭代对象

2.将1中的可迭代对象转为迭代器,使用next()方法迭代操作

自己不敲代码永远学不会写代码

下课

人生苦短,我选Python

未完待续,连载中......


分享到:


相關文章: