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))) #生成器表达式
版权声明:本文为python1988原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。