python三大神器===》生成器
1. 認識生成器
利用迭代器,我們可以在每次迭代獲取資料(透過next()方法)時按照特定的規律進行生成。但是我們在實現一個迭代器時,關於當前迭代到的狀態需要我們自己記錄,進而才能根據當前狀態生成下一個資料。為了達到記錄當前狀態,並配合next()函式進行迭代使用,我們可以採用更簡便的語法,即生成器(generator)。生成器是一類特殊的迭代器。
2.如何建立一個生成器:
生成器時一種特殊的迭代器,我們既然知道迭代器的建立方法,那麼建立一個生成器也不是一件難事,首先我們先認識第一種生成器的建立的方法:
利用生成器推導式的方法建立一個生成器
# 第一種生成器建立方法 my_list = (x for x in range ( 10 )) print (my_list) print ( next (my_list)) print ( next (my_list)) print ( next (my_list))
|
執行結果
0 1 2
|
怎麼樣這樣方式建立一個生成器是不是特別簡單呢?需要注意的是列表推導式是[ ]而生成器推導式是(),這一點不要搞錯了。
3.利用生成器編寫斐波那序數列
我們已經知道了一種生成器的建立方法,接下來我們將透過建立生成器的第二種方法來建立一個斐波那序數列
首先我們先了解下斐波那序數列,斐波那序數列定義了第一個數為0第二個為1,之後的每個數字都為前兩個數字之和,簡單來說就是類似與 0,1,1,2,3,5.......的數列
# 生成器的第二種建立方法 def dome(num): a = 0 b = 1 # 定義下標值 iter_index = 0 while iter_index
|
執行結果
0 1 1 2
|
我們可以看到,這種定義方法與定義一個迭代器差不多,比較明顯的區別就是yeild 替代了return,那麼yeild與return有什麼區別呢?
首先return是返回並終止函式的執行,如果return有值則返回return後的值,而yeild則是展廳函式的執行,下次執行函式會接著執行yeild只有的程式碼,如果yeild後有值則返回yeild後的值
4.生成器的send方法
yeild函式除了能暫停函式的執行外,還能透過send()方法向其傳送一個值,接下來我們驗證一下:
def dome(num): a = 0 b = 1 # 定義下標值 iter_index = 0 while iter_index
|
執行結果
0 10 1 100 1
|
需要注意的是,第一個send()傳的值必須為none,否則會報錯。這是為什麼呢?這是因為第一次執行時yeild返回了result = ?寧沒有被執行,如果直接傳過去一個非none的值會因為沒有人接收而報錯。
原文出處:https://www.cnblogs.com/xuchuankun/p/9514545.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1020/viewspace-2812467/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python 生成器Python
- python生成器Python
- Python的生成器Python
- 【python】打包神器--pyinstallerPython
- python 生成器&迭代器Python
- python跳坑---生成器Python
- 如何使用python生成器Python
- Python迷宮生成器Python
- Python程式管理神器——SupervisorPython
- Python 的打包神器 — Nuitka!PythonUI
- python中生成器的使用Python
- Python迭代器與生成器Python
- Python3 生成器解析Python
- python生成器的原理探究Python
- python進階(11)生成器Python
- Python語法—迭代器、生成器Python
- Python基礎(12):生成器 & reducePython
- 關於Python生成器,如何使用?Python
- 1.5.4 Python迭代器和生成器Python
- python列表生成式和生成器Python
- python四則運算生成器Python
- python如何快速建立生成器Python
- Python 高階特性(4)- 生成器Python
- python 生成器 和生成器函式 以及各種推導式Python函式
- Python視覺化神器Yellowbrick使用Python視覺化
- python三大神器之fabricPython
- Python多環境管理神器(pipenv)Python
- python是如何實現生成器的Python
- Python生成器讀取大檔案Python
- 史上最全 Python 迭代器與生成器Python
- python3.7 迭代器和生成器Python
- python版網文圖片生成器Python
- Python偽資料生成器Mimesis 使用Python
- Python 生成器不該這麼用Python
- python生成器函式的特點Python函式
- 解析python生成器函式的呼叫Python函式
- python如何建立遞增的生成器Python
- python中for語句讀取生成器Python