day_5.26python面试重点
列表生成式:
1 ''' 2 2018-5-26 19:40:58 3 生成器(generator):在Python中,这种⼀边循环⼀边计算的机制。 4 ''' 5 # 第一种实现 :只要把⼀个列表⽣成式的[ ]改成( ) 6 #这是一个生成式 7 L = [x*2 for x in range(5)] 8 print(L) 9 # for i in range(5) for循环5次 10 G = (x*2 for x in range(5)) 11 print(G) 12 ''' 13 创建L和G的区别仅在于最外层的[ ]和( ), 14 L是⼀个列表,⽽G是⼀个 ⽣成器。 15 我们可以直接打印出L的每⼀个元素, 16 但我们怎么打印出G的每⼀个 元素呢? 17 如果要⼀个⼀个打印出来, 18 可以通过next()函数获得⽣成器的下⼀个返回值 19 ''' 20 #使用一个小小的while循环把生成器打印东西都储存到列表中 21 b = [] 22 while True: 23 a = next(G) 24 print(a) 25 b.append(a) 26 break 27 ''' 28 不用第三个变量完成变量交换 29 ''' 30 a = 8 31 b = 5 32 a = a+b 33 b = a-b 34 a = a-b 35 #在python中 36 a,b = b,a 37 38 #第二种实现,用函数方式实现 39 #斐波拉契数列 40 #只要函数里面有yield 则是一个生成器,是生成一个生成器的对象 41 def creatNum(): 42 print("-----start-----") 43 a,b = 9,1 44 for i in range(5): 45 print("---1-----") 46 #让程序停了 47 yield b 48 a,b = b ,a+b 49 print("-----3-----") 50 print("------stop__________") 51 print(creatNum()) #生成了一个对象 52 a = creatNum() 53 next(a)