Python之高階特性(2)

2021-08-18 20:59:43 字數 1839 閱讀 3400

一、列表生成式

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...