1. 程式人生 > >Python 叠代器&生成器

Python 叠代器&生成器

AC 圖片 OS gen func isp for tor gif

生成器

  • 通過列表生成式, 可以直接生成一個列表. 但是受到內存限制, 列表容量是有限的. 如果創建一個包含100萬個元素的列表, 卻只需要訪問其中幾個, 空間就浪費了.
  • 如果列表元素可以按照某種算法算出來, 在循環的過程中不斷推算出後續的元素, 這樣就不必創建完整的list,從而節省大量空間. 在Python中, 這種一邊循環一邊計算的機制, 稱為生成器: generator.

創建一個generator, 有很多種方法

  • 第一種方法: 把一個列表生成式的 [ ] 改成 (), 就創建了一個generator
    • 1 >>> L = [x*x for x in range(10)]
      
      2 >>> L 3 4 >>> g = (x*x for x in range(10)) 5 >>> g
    • 技術分享圖片
       1 #!/usr/bin/python
       2 # -*- coding: utf-8 -*-
       3 
       4 a = []
       5 for i in range(10):
       6 a.append(i*2)
       7 
       8 print(a)
       9 
      10 
      11 print("========== 上述代碼等效於下面這句 ========== ")
      12 b = [i*2 for i in range(10)]
      13 print(b)
      14 
      15
      16 print("============== 更進階寫法 ============== ") 17 c = [func(i) for i in range(10)] 18 print(c)
      View Code

Python 叠代器&生成器