首页 > 其他 > 详细

生成器

时间:2020-05-31 23:42:20      阅读:42      评论:0      收藏:0      [点我收藏+]
#列表生成式

#列表生成式
m = [x for x in range(10)]  #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(m)

def add(n):
    return n*2

s = [add(x) for x in range(10)]
print(s) #[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

 

生成器:两种创建方式

 

#方式一:
s = (x for x in range(100)) #生成器取值下面两种方式等价 # m = s.__next__() print(next(s)) # 0 print(next(s)) # 1 #也可以用for循环 for i in s: #生成器就是可以可迭代对象 print(i)
#方式二:yield
def
foo(): yield 1 print(foo()) #<generator object foo at 0x000001A11A30FF10> 生成器对象 for i in foo(): print(i) #打印出一个1

可迭代对象:对象拥有iter方法的

#斐波拉契数列

def fib(max):
    n,before,after = 0,0,1
    while n < max:
        yield before
        before,after = after,after+before
        n = n + 1


print(fib(8)) #<generator object fib at 0x000001DC7CF54888>

m = fib(8)
for i in m:
    print(i)
#打印结果
#0
#1
#1
#2
#3
#5
#8
#13

 

生成器

原文:https://www.cnblogs.com/qqxin/p/13022131.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!