Python實踐19-生成器

生成器的出發點

  • Python中迭代器可以用來遍歷可迭代對象,但是需要通過實現一個迭代器類來完成
  • Python可以通過調用函數達到類似迭代器的效果,這種函數就叫做生成器。

生成器語法

  • Python中的生成器是一個帶yield語句的函數
  • 生成器運行到yield,會通過yield返回一個中間值給調用者,並且暫停執行。
  • 當生成器的next()被調用的時候,它會從上次離開的地方繼續執行。
  • Python的for循環自帶next()調用和對StopIteration的處理,常常用來迭代一個生成器

最佳用途

  • 使用生成器最好的地方就是迭代一個巨大的數據集合時對每個元素進行及時的操作和處理

生成器實例

下面的例子,使用生成器來迭代素數

# 判斷一個數字是否是素數ndef is_prime(num):n if num > 1:n if num == 2:n return Truen if num % 2 == 0:n return Falsen for current in range(3, int(math.sqrt(num)+1), 2):n if num % current == 0:n return Falsen return Truen return Falsennn# 生成器函數,start從什麼位置開始向上查找素數ndef get_primes(start):n while True:n if is_prime(start):n yield startn start += 1nnnif __name__ == "__main__":n i = 0n count = 10 # 一共查找多少個素數nn # 用for循環來迭代生成器n for p in get_primes(2):n print(p)n i += 1n if i >= count:n breakn

代碼下載

本文代碼已經歸檔到github,您可以訪問下面的鏈接獲得。歡迎star該代碼倉庫。

代碼地址

如果覺得本文對您有幫助,敬請點贊。

推薦閱讀:

1024的爬蟲(1)
用 Python 怎樣實現一個九九乘法表?
Python入門 遍歷循環 for...
Python數據處理 II:數據的清洗(預處理)
Tornado與flask的特點和區別有哪些?

TAG:Python | Python入门 | Python开发 |