python大作战之迭代器初级篇

来源:互联网 发布:如何用手机淘宝装修 编辑:程序博客网 时间:2024/04/29 11:11

有一段时间没给大家分享python了,其实我也是很着急的,原因是我最近在学习装饰器,迭代器和生成器,同时也在想怎么能让大家一目了然

的看懂我所写的东西,那么今天就跟大家一起先来认识下迭代器。

大家知道,可以直接作用于for循环的数据类型有哪几种吗?

一类是集合数据类型,如list,tuple,dict,set,str等

一类是generator,包括生成器和带yield的generator function(这个后续会跟大家分享生成器,暂时在这里不提)

这些可以直接作用于for循环的对象统称为可迭代对象------Iterable

本次主要围绕下面四个方面:

1:iter()函数和next函数

2:stopiteration异常

3:使用for\while循环迭代

4:迭代str,list,tuple,dict

a:首先我们来讲iter()函数和next函数:

>>> fjh=['tom','amy','lily']>>> x=iter(fjh)>>> print(type(x))<class 'list_iterator'>
从代码中可以看出使用iter()函数,实际上就得到一个迭代器,我们可以使用type来查看它的数据类型
另外对于next()函数:

>>> fjh=['tom','amy','lily']>>> it=iter(fjh)>>> print(next(it))tom>>> print(next(it))amy>>> print(next(it))lily
从代码中可以看出next()可以计算出元素的值,next()是python中内置函数,后续会跟大家交流

b:对于stopiteration异常

如果按照上面所给的代码,再次调用内置函数next(),就会抛出异常

>>> print(next(it))Traceback (most recent call last):  File "<pyshell#39>", line 1, in <module>    print(next(it))StopIteration
因为没有更多的元素可以遍历吧。

c:对于迭代集合数据类型

>>> fjh=['tom','amy','lily']>>> fjh1=('tom','amy','lily')>>> fjh2='学习python'>>> fjh3={'tom','amy','lily'}>>> it=iter(fjh)>>> it1=iter(fjh1)>>> it2=iter(fjh2)>>> it3=iter(fjh3)>>> print(next(it))tom>>> print(next(it1))tom>>> print(next(it2))学>>> print(next(it3))lily
但是对于字典,这里需要单独列出来

>>> fjh={1:'A',2:'B',3:'C'}>>> it=iter(fjh)>>> for x in it:print(x,fjh[x])1 A2 B3 C
d:使用for\while循环迭代

使用for循环迭代,在上面的代码中已经有展示

>>> fjh={'A','B','C'}>>> it=iter(fjh)>>> while True:try:print(next(it))except StopIteration as fsh:print('迭代结束')breakABC迭代结束
小结:

1:凡是可作用于for循环的对象都是Iterable类型

2:凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列

3:集合数据类型如list,dict,str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。




原创粉丝点击