'''各种推导式
列表推导式:[结果 for循环 if条件]
字典推导式:[k:v for循环 if条件]
集合推导式:{结果 for循环 if条件}
没有元组推导式:
生成器推导式:(结果 for循环 if条件)'''
'''生成器表达式:(结果 for 循环 if 条件)'''g= (i * 2 for i in range(10) if i %2 ==0)print(g) #此时打印的就是一个生成器对象,并不是数据
print(list(g)) #list()函数可以把一个生成器拿空,并拿到列表[0, 4, 8, 12, 16]
'''迭代器:可以一个一个的拿到数据,具有__iter__和__next__方法
可迭代对象:具有__iter__的方法
通过__iter__可以拿到一个对象的迭代器
迭代器特点:
1.省内存(生成器)
2.惰性机制(不执行__next__不拿值)
3.只能向前,不能反复(拿光了就没了)
for循环内部使用的就是迭代器。
当一个迭代器内的元素被拿空之后,继续执行__next__会报错:StopIteration
生成器本质就是迭代器。
生成器有两种创建方式:
1、生成器函数
2、生成器表达式
生成器函数:函数内部有yield语句就是生成器函数'''
defgen():print(