#生成器:列表解析(数据量大,占内存)
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"))

posted on 2019-06-24 22:53  天0涯  阅读(170)  评论(0编辑  收藏  举报