2018年12月24日--生成器

生成器:理解为一种数据类型,自动实现了迭代器协议(已经包含了__iter__,可以直接用next方法):

生成器函数:使用yield语句而不是return语句,yield一次返回一个结果,没个结果中间挂起函数状态,以便下次继续执行

生成器表达式:把列表解析 []改成()就变成生成器表达式,更省内存

 

l=[1,2,3,4,5]
res=l.__iter__().__next__()

 

 

def test():
    yield 1
    yield 2 #相当于return但是能返回多次,生成器函数
    yield 3
g=test()
print(g)
print(g.__next__())
print(g.__next__())
print(g.__next__())

print('$'*44)

name='abc'
res='sb' if name =='sxs' else 'sxj'#三元表达式 如果T则返回sb 如果F 则返回sxj
print (res)

print('#'*44)

egg=[]
for i in range(10):
    egg.append("鸡蛋%s"%i)
print (egg)

print('^'*55)
#列表解析
egg2=['鸭蛋%s'%i for i in range(10)]
egg3=['鸭蛋%s'%i for i in range(10) if i > 5 ]
print(egg2)
print(egg3)

print('*'*55)

jiji=('鸟蛋%s'%i for i in range(10))#生成器表达式
print(jiji)
print(jiji.__next__())
print(jiji.__next__())
print(jiji.__next__())
print(next(jiji))

 

 

 

print(sum(i for i in range(101))) #生成器表达式

 

posted @ 2018-12-24 21:29  小圣庄  阅读(132)  评论(0编辑  收藏  举报