生成器,可迭代对象,迭代器解析

  • 首先,list,tuple,dict,set,str这些数据类型,这肯定是在事物发展中创建出来的一些很实用的数据类型,没啥好说的;
  • 然后,为了创建list的方便,引入了列表生成式这个语法:[ a  for  a  in b   if   c  ]
  • 然后,通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问 前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器generator。创建的方法就是将[] 变成()
  • 以上两种:list,tuple,dict,set  ,str  和   generator 以及generator函数,都叫可迭代对象。  可迭代对象就是可以通过   for...in...来进行遍历的对象。用for...in...来进行遍历是因为有些对象,并没有下标,只是一些东西的集合体,比如一个dict,所以要想遍历它就通过for...in...吧。。。此时,这个东西就叫可迭代对象
  • 然后,可以看出,生成器 generator是为了惰性计算的需求。而有此惰性计算功能的对象就叫迭代器, list,tuple,dict,set  ,str虽然可以用for...in...来进行遍历,但其并没有惰性计算的特性:就是需要的时候再计算。不过,这些数据类型要想变成迭代器可以通过iter()函数
  • 至此,我理解的生成器,可迭代对象,迭代器的关系以及作用就结束了。

猜你喜欢

转载自blog.csdn.net/Saltwind/article/details/82560750