'''生成器表达式''' # lst = [i*i for i in range(5)] # print(lst) #列表生成式,直接生成一个列表,下面把中括号换为小括号,就是一个生成器 # g = (i*i for i in range(5)) # print(g) #生成器对象,省内存 # print(next(g)) # print(next(g)) # print(next(g)) # print(next(g)) # print(next(g)) # print(next(g)) #StopIteration ''' 一个面试题,难度系数50000000000颗星 ''' # def add(a, b): # return a + b # # def test(): # for r_i in range(4): # yield r_i # # g = test() #g是一个生成器,也是一个迭代器 # # for n in [2, 10]: # g = (add(n, i) for i in g) # # print(list(g)) ''' 分析,当n=2时, g = (add(n, i) for i in g) 右边是一个生成器表达式, g就是一个生成器 当n=10时, g = (add(n, i) for i in (add(n, i) for i in g)) 右边是一个生成器表达式, g就是一个生成器 当程序执行到list(g)时,开始取生成器里的值 当n=10时,g = (add(10, i) for i in (add(10, i) for i in g)) g = (add(10, i) for i in (10, 11, 12, 13)) g = (20, 21, 22, 23) 所以打印出来的值就是[20, 21, 22, 23] '''

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。