python cookbook讀書筆記

2022-05-12 20:51:07 字數 964 閱讀 4055

今天開始讀《python-cookbook》,書裡有許多python優雅的寫法,可以作為python的一本高階書。

以下是我個人的一些筆記

1、遞迴並不是python擅長的

2、關於生成器(generator)

乙個函式中需要有乙個yield語句即可將其轉換為乙個生成器。 跟普通函式不同的是,生成器只能用於迭代操作。

#

使用生成器

deffrange(start, stop, increment):

x =start

while x yield

x x +=increment

#普通函式

defnrange(start, stop, increment):

x =start

arr=

while x x +=increment

return

arrfor i in frange(1,5,0.7):

print

(i)for i in nrange(1,5,0.7):

print(i)

可以看到兩個函式用法、輸出都一樣,但是實現方式完全不同。顯然用到生成器函式更加優雅

乙個生成器函式主要特徵是它只會回應在迭代中使用到的 next 操作,next操作讓函式執行到yeild,就返回後面的值為止。然後繼續next,直到生成器函式返回退出,迭代終止。因此最後乙個next會捕獲乙個異常

3、collections.deque雙端佇列。

使用deque(maxlen=n)建構函式會新建乙個固定大小的佇列。當新的元素加入並且這個佇列已滿的時候, 最老的元素會自動被移除掉。

在佇列兩端插入或刪除元素時間複雜度都是o(1),區別於列表,在列表的開頭插入或刪除元素的時間複雜度為o(n)

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