生成器:
- 将[]改为()
G = (i*I for I in range(8))
生成器是一个对象不能直接打印
通过遍历得到生成器的数据
For I in g:
Print(i)
通过next得到数据
- Yield
一定要在函数的内部
Yield a 向生成器中添加一个对象
Generator 生成器类型
裴波那切 从第三个数开始 等于前连个数的和
生成器的特点 节约内存
迭代器、可迭代
迭代器:可以被next函数调用,并不断返回下一个值的对象: iterator
可迭代:可以直接作用于for循环的对象统称为可迭代对象: iterable
引入模块
可以被for循环的数据类型
- 集合数据类型, list ,tuple , dict, set, str
- 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)