1. 程式人生 > >python學習---生成器

python學習---生成器

odi logs fib class 一次 int pan cep 方法

 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 
 4 #01. 什麽是生成器?
 5 #==> 在Python中,一邊循環一邊計算的機制,稱為生成器:generator
 6 ‘‘‘
 7 在python中,使用了yield的函數被稱為生成器(generator)
 8 跟普通函數不同的是,生成器是一個返回叠代器的函數,只能用於叠代操作,更簡單點理解
 9 生成器就是一個叠代器。
10 在調用生成器運行的過程中,每次遇到yield時函數會暫停並保存當前所有的運行信息,返回
11 yield的值。並在下一次執行next()方法時從當前位置繼續運行。
12 ‘‘‘ 13 #02. 如何創建一個生成器(generator)? 14 # 要創建一個generator,第一種方法只要把一個列表生成式的[]改成 15 # (),就創建一個generator。 16 L = [x * x for x in range(10)] #列表生成式 17 print(L) #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 18 s = (x * x for x in range(10)) #生成器 19 print(s) #<generator object <genexpr> at 0x0000000002126888> 20 for
x in s: #用for循環輸出生成器所有元素 21 print(x,end=" ") #0 1 4 9 16 25 36 49 64 81 22 print("") 23 24 s1 = (x * x for x in range(10)) 25 print(list(s1)) #將生成器轉換成列表 26 27 def fib(max): 28 n, a, b = 0, 0, 1 29 while n < max: 30 yield b 31 a, b = b, a + b 32 n = n + 1 33
return done 34 35 f = fib(10) 36 print(fib(10):, f) 37 for x in f: 38 print(x,end=" ") 39 print("") 40 41 #call generator manually: 42 g = fib(5) 43 while 1: 44 try: 45 x = next(g) 46 print(g:,x) 47 except StopIteration as e: 48 print(Generator return value:, e.value) 49 break

python學習---生成器