分享

Iterator迭代器和生成器

 融水公子 2018-09-12
在Python中,迭代器对象实现了iter()next()两种方法。
String,ListTuple对象可用于创建Iterator
----------------------------------------------------
list = [1,2,3,4]
it = iter(list) # this builds an iterator object
print (next(it)) # 输出下一个元素 1
for x in it:          #完整输出
   print (x, end=" ")#2 3 4 
-----------------------------------------------------
list = [1,2,3,4]
it = iter(list) # this builds an iterator object
#or using next() function
while True:
   try:
      print (next(it))
   except StopIteration:
      sys.exit() #you have to import sys module for this
---------------------------------------------------------------
Iterable--(可迭代对象)
直接作用于for循环:
list、tuple、dict、set、str(集合数据类型)
generator--(生成器)和带yield的generator function 
生成器都是Iterator对象

generator--(生成器)
Iterator--(迭代器)
Iterable--(可迭代对象)list、dict、str
iter()函数--变成Iterator
isinstance()判断--Iterable(可迭代对象)--Iterator对象
next()函数
StopIteration错误
Iterator对象--表示的是一个无限大数据流--看做有序序列(全体自然数)

generator--(生成器)
可以作用于for循环
还可以被next()函数不断调用并返回下一个值
最后抛出StopIteration错误,无法继续返回下一个值了

Iterator--(迭代器)
可以被next()函数调用
不断返回下一个值的对象

isinstance()判断
>>> from collections import Iterator
>>> isinstance((x for x in range(10)), Iterator)
True
>>> isinstance([], Iterator)
False
>>> isinstance({}, Iterator)
False
>>> isinstance('abc', Iterator)
False

iter()函
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True









分享知识,分享快乐!希望中国站在编程之巅!

               ----

公众微信号:rsgz520

360图书馆馆号:rsgz002.360doc.com

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多