《Python Cookbook 3rd》筆記彙總

2021-10-10 08:00:53 字數 4842 閱讀 2722

標題1.1:拆分序列後賦值給多個變數

可迭代物件、拆分賦值

1.2:拆分任意長可迭代物件後賦值給多個變數

可迭代物件、拆分賦值、星號表示式

1.3:保留最近n個元素

collections.deque、限容雙端佇列、yield

1.4:查詢最大或最小的n個元素

heapq、堆

1.5:實現乙個優先順序佇列

heapq、堆、元組比較

1.6:字典中的鍵對映多個值

字典、collections.defaultdict

1.7:字典排序

collections. ordereddict、雙向鍊錶

1.8:字典運算

字典、最小值、最大值、排序、鍵集、值集、鍵值對換、lambda

1.9:查詢兩字典的相同點

set、集合交與差的運算、字典推導式

1.10:刪除序列相同元素並保持順序

set、yield、list、lambda

1.11:命名切片

魔數、切片、slice()、indices()

1.12:序列**現次數最多的元素

collections.counter、字典

1.13:通過某個關鍵字排序乙個字典列表

排序、sorted()、operator.itemgetter、lambda

1.14:排序不支援原生比較的物件

排序、sorted()、operator.attrgetter、lambda

1.15:通過某個欄位將記錄分組

分組、operator.itemgetter、litertools.groupby()

1.16:過濾序列元素

列表推導式、生成器表示式、itertools.compress()

1.17:從字典中提取子集

字典推導式

1.18:對映名稱到序列元素

下標另名為、collections.namedtuple()

1.19:轉換並同時計算資料

聚集函式、sum()、max()、min()、列表推導式、生成器表示式

1.20:合併多個字典或對映

邏輯上的字典、collections.chainmap

標題2.1:使用多個界定符分割字串

re、split()、正則式、非捕獲分組、生成器表示式、[:]、[::]

2.2:字串開頭或結尾匹配

str.startswith()、str.endswith()、列表推導式

2.3:用shell萬用字元匹配字串

fnmatch.fnmatch()、fnmatch.fnmatchcase()、列表推導式

2.4:字串匹配和搜尋

re、正則式、compile()、match()、findall()、group()

2.5: 字串搜尋和替換

re、正則式、compile()、sub()、str.repalce()

2.6:字串忽略大小寫的搜尋替換

re、正則式、re.ignorecase

2.7:最短匹配模式

re、正則式、非貪婪模式

2.8:多行匹配模式

re、正則式、非捕獲組、re.dotall

2.9:將unicode文字標準化

unicodedata.normalize()

2.10:在正則式中使用 unicode

re、正則式、unicode

2.11:刪除字串中不需要的字元

str.strip()、str.lstrip()、str.rstrip()

2.12:審查清理文字字串

str.translate()、str.replace()

2.13:字串對齊

str.ljust() 、str.rjust()、str.center()、format()、%

2.14:合併拼接字串

+、str.join()、format()、yield

2.15:字串中插入變數

str.format()、str.format_map()

2.16:以指定列寬格式化字串

textwrap.fill()

2.17:在字串中處理html和xml

html.escape()、html.parser、xml.sax.saxutils

2.18:字串令牌解析

re、正則式、編譯原理

2.19:實現乙個簡單的遞迴下降分析器

re、正則式、編譯原理

2.20:位元組字串上的字串操作

位元組字串

標題3.1:數字的四捨五入

round()、format()

3.2:執行精確的浮點數運算

decimal

3.3:數字的格式化輸出

format()

3.4:二、八、十六進製制整數

bin()、oct()、hex()、format()

3.5:位元組到大整數的打包與解包

int.from_bytes()、int.to_bytes()

3.6:複數的數**算

complex()、cmath、numpy

3.7:無窮大與 nan

float()、man.isinf()、math.isnan()

3.8:分數運算

fraction

3.9:大型陣列運算

numpy

3.10:矩陣與線性代數運算

numpy

3.11:隨機選擇

random

3.12:基本的日期與時間轉換

datetime、timedelta

3.13:計算最後乙個周五的日期

datetime、timedelta

3.14:計算當前月份的日期範圍

datetime、timedelta、date、calendar

3.15:字串轉換為日期

datetime

3.16:結合時區的日期操作

datetime、pytz

標題4.1:手動遍歷迭代器

next()、iter()

4.2:**迭代

__iter__()

4.3:使用生成器建立新的迭代模式

frange()、range()、next()

4.4:實現迭代器協議

yield、yield from

4.5:反向迭代

reversed()

4.6:帶有外部狀態的生成器函式

__iter__()

4.7:迭代器切片

itertools.islice()

4.8:跳過可迭代物件的開始部分

itertools.dropwhile()、islice()

4.9:排列組合的迭代

itertools.permutations()排列、itertools.combinations()組合

4.10:序列上索引值迭代

enumerate()列舉

4.11:同時迭代多個序列

zip()

4.12:不同集合上元素的迭代

itertools.chain()

4.13:建立資料處理管道

yield、yield from、itertools.chain()

4.14:展開巢狀的序列

isinstance()、yield from

4.15:順序迭代合併後的排序迭代物件

heapq.merge()

4.16:迭代器代替 while 無限迴圈

iter()、lambda

標題5.1:讀寫文字資料

open(), with…as…, encoding=

5.2:列印輸出至檔案中

print(』』, file=f)

5.3:使用其他分隔符或行終止符列印

print(』』, 『』, 『』, sep=』』, end=』』), str.join((』』,))

5.4:讀寫位元組資料

open(), rb, wb

5.5:檔案不存在才能寫入

open(), xt, xb, os.path.exists()

5.6:字串的 i/o 操作

io.stringio(), io.bytesio()

5.7:讀寫壓縮檔案

gzip, bz

5.8:固定大小記錄的檔案迭代

iter(), functools.partial()

5.9:讀取二進位制資料到可變緩衝區中

bytearray(), file.readinto

5.10:記憶體對映的二進位制檔案

mmap

5.11:檔案路徑名的操作

os.path

5.12:測試檔案是否存在

os.path

5.13:讀寫壓縮檔案

os.listdir(), glob

5.14:忽略檔名編碼

sys.getfilesystemencoding()

5.15:列印不合法的檔名

unicodeencodeerror

5.16:增加或改變已開啟檔案的編碼

sys.stdout.buffer.write(b』』)

5.18:將檔案描述符包裝成檔案物件

os.open(), open()

5.19:建立臨時檔案和資料夾

tempfile.temporaryfile, tempfile.namedtemporaryfile, tempfile.temporarydirectory()

5.20:與串列埠的資料通訊

serial.serial()

5.21:序列化 python 物件

pickle.dump(), pickle.load()

待續

Python Cookbook學習記錄

4.迭代器和生成器 4.9迭代所有可能的組合和排列 import itertools items a b c permutations 接受乙個元素集合,將其中的元素重排列為所有可能的情況,並以元組形式返回 for p in itertools.permutations items print p ...

python cookbook學習筆記十一

csv檔案讀取 csv檔案格式如下 分別有2行三列。訪問 如下 f open r e py prj test.csv rb f csv csv.reader f forf inf csv printf 在這裡f是乙個元組,為了訪問某個字段,需要用索引來訪問對應的值,如f 0 訪問的是first,f ...

每天學點Python Cookbook(四)

任務 尋找上乙個星期五的日期。解決方案 通過python標準庫的datetime模組,可以快速完成此任務。import datetime,calendar def find last friday last friday datetime.date.today oneday datetime.tim...