生成器、可迭代、迭代器

生成器:

  1. 将[]改为()

G = (i*I for I in range(8))

生成器是一个对象不能直接打印

通过遍历得到生成器的数据

         For I in g:

                   Print(i)

通过next得到数据

  1. Yield

一定要在函数的内部

Yield a 向生成器中添加一个对象

Generator 生成器类型

 

裴波那切  从第三个数开始 等于前连个数的和

 

生成器的特点 节约内存

 

迭代器、可迭代

迭代器:可以被next函数调用,并不断返回下一个值的对象: iterator

可迭代:可以直接作用于for循环的对象统称为可迭代对象:  iterable

        

引入模块

可以被for循环的数据类型

  1. 集合数据类型, list ,tuple , dict, set, str
  2. Generator 包括生成器和带yield的generator function

From collections.abc import iterable 可迭代

         From collections.abc import iterator 迭代器   可以next

         Isinstance(a,iterator)判断对象是否是iterator 迭代器

         Lsinstance(a,iterable)判断对象是否是iterable可迭代

         生成器是一个迭代器

Iter()函数

List, dict, str  是可迭代的(可以for遍历)不是迭代器(没有next方法)

生成器是可迭代的也是迭代器

可以将list , dict, str 等可迭代的变成迭代器  使用iter()函数:

 

         Isinstance(iter(a),iterator)

猜你喜欢

转载自blog.csdn.net/jinianh/article/details/84315553