1. 程式人生 > >生成器面試題1

生成器面試題1

int 表達 類型強制轉換 函數 pla 沒有 方式 hid style

技術分享圖片
 1 def demo():  # 生成器函數
 2     for i in range(4):
 3         yield i
 4 
 5 g = demo()  # 得到一個生成器,demo中的代碼沒有被執行
 6 
 7 g1 = (i for i in g)     # ()所以是生成器表達式,得到了一個生成器g1,生成器表達式的代碼一句也沒有被執行
 8 g2 = (i for i in g1)    # 生成器表達式,得到了一個生成器g2,生成器表達式的代碼沒有被執行
 9 
10 print(list(g1))     # [0, 1, 2, 3]      # 此時使用數據類型強制轉換的方式從生成器g1中取值,所以g1對應的生成器表達式開始執行,全部執行完畢,g1生成器沒有東西了
11 print(list(g2)) # [] # 此時取值,g2對應的表達式開始執行,表達式中遍歷g1生成器,但是g1生成器值已經取完了,所以這裏為[] 12 13 # ------------------------------------------- 14 15 def add(n, i): 16 return n + i 17 18 def test(): 19 for i in range(4): 20 yield i 21 22 g = test() 23 24 for n in [1, 10]: 25 g = (add(n, i) for
i in g) # 拆開看 26 27 print(list(g)) # [20, 21, 22, 23] 28 29 30 # n = 1 31 #g = (add(n, i) for i in test()) 32 33 # n = 2 34 # g = (add(n, i) for i in (add(n, i) for i in test())) 35 36 #list(g)
View Code

生成器面試題1