迭代器和生成器

  • 可迭代对象:任何你可以用for ... in ... 的对象都是可迭代对象, list,strings, files, sockets…。 当你创建一个list的时候,你一个个的获取list里面的值,这就是可迭代对象
 mylist = [1, 2, 3]
 for i in mylist:
    print(i)
  • 迭代器:它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了_iter__next_()(python2中实现next())方法的对象都是迭代器, 有人需要的时候才给它生成值返回,没调用的时候就处于休眠状态等待下一次调用。
from itertools import count
counter = count(start=13)
next(counter) # 13
  • 生成器:迭代器的一种, 它不需要写__iter__()__next__() 方法,只需要一个yield关键字, 但是生成器只能迭代一次. 生成器只会在调用的时候产生值,他不会提前将值存储在内存中
mygenerator = (x*x for x in range(3))
for i in mygenerator:
    print(i)

 

posted @ 2019-07-15 16:42  anobscureretreat  阅读(116)  评论(0编辑  收藏  举报