#生成器:列表解析(数据量大,占内存)
a=[i for i in range(100)]
#生成器表达式:
a=(i for i in range(100))
#生成器函数:
def gen():
yield:1
yield:2
# 三元、迭代
list1= [1,2,3,4]
a=[i for i in list1]
# generator 生成器(简单点理解生成器就是一个迭代器)
'''
生成器的好处:
1.占用内存小,不会像list等需要加载所有元素到内存在转为迭代器
2.效率高,不需要转换为迭代器
'''
# 三元+生成器
b=(i for i in list1 if i>2)
for i in b:
print(i)
# 迭代器
c=list1.__iter__()
print(type(a))
print(type(b))
print(type(c))
# 生成器的使用
def gen1():
yield 1
yield 2
yield 3
gen = gen1()
print(next(gen))
print(next(gen))
print(next(gen))
def gen2(name):
while True:
# res接受gen.send(obj)传的值(注意:name和传的形参无必然关系)
res = yield "name:%s" %name
name = res
gen = gen2("lds")
print(gen.send(None))
print(gen.send("123"))
print(gen.send("1234"))