Python--day13--迭代器2

1,什么是迭代器?

一个列表执行了__iter__()之后的返回值就是一个迭代器

2,迭代器可迭代的秘密:

迭代器秘密的三个方法__setstate__,__next__,__length_hint__:(列表[]是没有这三个方法的,只有列表的迭代器[].__iter__()才有这三个方法)

迭代器的.__next__()方法的使用:

可迭代的和迭代器的概念

1,Iterable    可迭代的  -->    __iter__    只要含有__iter__方法的都是可迭代

2,[].__iter__()    迭代器    -->  _next_    通过next就可以从迭代器中一个一个的取值

 

可迭代协议和迭代器协议:

1,只要含有__iter__方法的都是可迭代的  ----  可迭代协议

2,迭代器协议  ----  内部同时含有__next__和__iter__方法的就是迭代器

 

 

判断是否是可迭代的和是否是迭代器的函数方法:isinstance([],Iterator))

 

for循环一个可迭代的数据类型和for循环这个数据类型的迭代器的结果是一样的:也就是比如说for循环一个列表l和循环列表的迭代器l.__iter__()是一样的:

迭代器的好处:

1,从容器类型一个一个的取值,会八所有的值都取到。

2,节省内存空间

  #迭代器并不会在内存中占用一大块内存

    #而是随着循环 每次生成一个

    #每次next每次给我一个

截图:

posted @ 2018-10-11 13:33  莱茵河的雨季  阅读(93)  评论(0)    收藏  举报