D14生成器及列表推导式

迭代器:内部含有__iter__,__next__方法的对象
可迭代对象不能取值,因为内部没有__next__的方法
迭代器的优点:
1、节省内存
2、惰性机制
3、单向、不可逆
如何判断可迭代对象、迭代器:
1、__iter__ in dir(obj)
2、引用一个模块:from collections import Iterator(迭代器)
print(isinstance(参数名,Iterator)
from collections import Iterable(可迭代对象)
print(isinstance(参数名,Iterable))

生成器本身就是迭代器
def func():
yield 22
def func():
print(111)
yield 222
g_obj = func()
列表推导式和生成器表达式:
列表推导式
li = [i for i in range(1,n)] #[变量(加工后的变量) for 变量 in iterable]循环模式
li = [变量(加工后的变量) for 变量 in iterable if 条件] 筛选模式
生成器表达式
将列表推导式的[]换成()
为什么要有生成器:
生成器本身是自己用python代码构建的,这样就满足了个性化需求方便之后使用。

猜你喜欢

转载自www.cnblogs.com/wr13640959765/p/9203810.html