#*****************列表表达式************ # l=[s**2 for s in range(1,11) if s%2 is 0] # print(l) # #[4, 16, 36, 64, 100] 1-10内所有偶数的平方 #*****************使用列表表达式创建generator,将 [ ]换为 ( )********* # l=(s**2 for s in range(1,11) if s%2 is 0) # print(l) #<generator object <genexpr> at 0x0000015C4A3A4BA0> 表明这是一个生成器对象 # print(next(l)) #4 # print(next(l)) #16 # print(next(l)) #36 # print(next(l)) #64 #************************使用函数创建,yield*************** def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return 'done' f=fib(10) # 规定了循环的总次数,同时fib进行了初始化,指向第0个 print(next(f)) print(next(f)) print(next(f)) print(next(f)) print(next(f)) print(next(f)) # 1 # 1 # 2 # 3 # 5 # 8 for i in fib(10): #使用迭代代替next print(i) # 1 # 1 # 2 # 3 # 5 # 8 # 13 # 21 # 34 # 55 g = fib(6) while True: try: x = next(g) print('g:', x) except StopIteration as e: print('Generator return value:', e.value) break # g: 1 # g: 1 # g: 2 # g: 3 # g: 5 # g: 8 #*****************杨辉三角********************** # 1 # / \ # 1 1 # / \ / \ # 1 2 1 # / \ / \ / \ # 1 3 3 1 # / \ / \ / \ / \ # 1 4 6 4 1 # / \ / \ / \ / \ / \ # 1 5 10 10 5 1 def YH(max): n ,l1,count = 0 ,[1] ,0 while n < max: try: yield l1 l2 = [] for i in range(0, (len(l1) - 1)): l2.append(l1[i] + l1[i + 1]) l2.insert(0, 1) l2.append(1) l1 = l2 n += 1 except StopIteration as e: print('Generator return value:', e.value) break Y = YH(10) for i in Y: print(i)
python学习day09 生成器 迭代器
猜你喜欢
转载自www.cnblogs.com/perfey/p/9152969.html
今日推荐
周排行