一、列表生成式
1、生成abc與def的全排列
2、1)輸出列表裡的名字 並且第乙個字母大寫
2)當列表裡有名字是非法字元時候,
輸出列表裡的名字 並且第乙個字母大寫
3、找出指定目錄下以.log結尾的檔案
import os模組
os.listdir(檔名) 檢視目錄下面的所有檔案
二、生成器
為什麼需要生成器?
通過列表生成式,我們可以直接建立乙個列表,受到記憶體限制,列表的容量肯定是有限的;通過生成器節省記憶體。
通過生成器在迴圈過程中不斷推算出後續的元素,這樣就不必建立完整的list,從而節省大量的空間。在python中,這種一邊迴圈一邊計算的機制,稱為生成器。
例子: 1、
fibonacci
數列(後乙個數等於前兩個數之和)
生成6個fibonacci數列
在函式裡面,加yield關鍵字,當呼叫有yield關鍵字函式時,返回的時生成器
yield工作原理:呼叫g.next()方法時,執行函式,遇到yield就停止執行;再次執行g.next()
2、怎麼訪問生成器內容
1)g.next()方法=next(g);需要幾個呼叫幾個;
.next():執行生成器函式,遇到yield停止,再次next()
.send()給生成器函式傳值,實現與生成器的互動,在函式的yield的前面可以通過乙個變數接收值
.close:關閉生成器,不能在呼叫next方法;否則報錯stopitertion(迭代器已經停止)
.throw:給生成器傳送乙個異常;
什麼是異常:nameerrow,zerodivisionerror.....
三、生成器應用
生產者---消費者模型
1、賣包子
consume函式=yield;是生成器函式
c1.next()停止在kind = yield這一行
2、在1)的基礎上增加廚師
cunsumer和produce函式=yield;是生成器函式
3、迷你聊天機械人
python學習之高階特性
切片 對列表 元組 字串 字典取中間的一部分,在c中一般是通過for迴圈拷貝 memcpy strcat等操作。而python提供了更方便的切片操作符 m n 前閉後開,如果從0取m可以省略 如果只用 就是切整片 也可以從尾端切片 m 前後的閉區間。列表生成式 list range m,n 構造乙個...
Python學習之高階特性詳解
列表生成式 list comprehensions 切片和迭代就不說了,這裡直接先看一下列表生成式吧,從名字就能大概猜出這是生成列表的一些方法,比如 如何生成 1 1,2 2,10 10 可以用迴圈不斷向列表尾部新增元素,如果使用 pythonic 的方法,也就是列表生成式,則是 x x for x...
Python自學之高階語法特性
1 切片 切片用於提取一組資料list tuple等中的一部分,個人感覺和matlab語法很相似,例如l 0 3 表示取l 0 l 1 l 2 l 3 與上面等價,初始或者結束為首尾位置,則可以縮寫 l 2 0 表示取倒數第乙個l 1 和倒數第二個l 2 l 2 與上面等價 l 0 5 2 表示以2...