您好,登錄后才能下訂單哦!
本篇內容介紹了“Python進階必讀的書是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
python cookbook 一書非常經典,作者David Beazley
,擁有超過20年的Python使用經驗,再加上他很強的寫作技能,所以值得一看。
它的翻譯版本也有很多,其中比較優秀的版本是yidao620c翻譯的,今天查閱翻譯作者,就職華為。當然,最重要的還是書的內容好,這種按照一個小的話題展開討論的方式,相信很多Python愛好者都比較喜歡。
這本書的話題要想理解透,還是需要具備一定的Python基礎,不太適合純Python小白。下面說說這本書,到底好在哪里,該怎么使用。
這是它的整體大綱目錄,一共包括十五章,分別討論:數據結構,字符串,數字,迭代器和生成器,文件與IO,函數、類、模塊,網絡編程,并發與測試。這些都屬于Python中最最核心的知識模塊,原書作者David個人推薦解決現實問題時,優先考慮Python中內置的模塊是否能解決問題。
那么這本書到底好在哪里呢?它分話題展開討論,每個話題都足夠精簡,無廢話。最大限度的從實際應用總結每個知識點,比如在話題:保留最后N個元素時,編寫的代碼就很漂亮:
from collections import deque
def search(lines, pattern, history=5):
previous_lines = deque(maxlen=history)
for line in lines:
if pattern in line:
yield line, previous_lines
previous_lines.append(line)
# Example use on a file
if __name__ == '__main__':
with open(r'../../cookbook/somefile.txt') as f:
for line, prevlines in search(f, 'python', 5):
for pline in prevlines:
print(pline, end='')
print(line, end='')
print('-' * 20)
保留有限歷史記錄正是 collections.deque
大顯身手的時候,難得是作者會對上面的代碼做了簡要的分析:
我們在寫查詢元素的代碼時,通常會使用包含
yield
表達式的生成器函數,也就是我們上面示例代碼中的那樣。這樣可以將搜索過程代碼和使用搜索結果代碼解耦
讓我們真正明白到底好在哪里,以及Python內置的模塊真的很強大。
再比如作者在討論查找最大或最小的 N 個元素
這個話題時,表面上這是一個很簡單的話題,其實如果要考慮的全面,也是需要留意一些事情的。作者分別討論了:
當查找元素個數N = 1
時,建議直接使用max
或min
方法
當查找元素個數接近整個列表長度時,建議使用sorted
函數以切片的方式獲取
當要查找的元素個數相對比較小的時候,函數 nlargest()
和 nsmallest()
是很合適的
相信大家都對前兩種情況的解決方法比較熟悉,第三種使用內置模塊heapq
是算法中的堆結構,常見的大根堆,小根堆,
>>> nums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]
>>> import heapq
>>> heap = list(nums)
>>> heapq.heapify(heap)
>>> heap
[-4, 2, 1, 23, 7, 2, 18, 23, 42, 37, 8]
>>>
Python中heapify后,默認建立一個小根堆
。它最重要的特征是 heap[0]
永遠是最小的元素。
比如,如果想要查找最小的 3 個元素,你可以這樣做,首先執行一次heappop后,次小元素變為最小,如下圖所示:
>>> heapq.heappop(heap)
-4
再次執行兩次后,就能得到列表的前三個最小的元素為[-4,1,2]
,此時的小根堆為如下圖所示:
>>> heapq.heappop(heap)
1
>>> heapq.heappop(heap)
2
當然,也可以直接使用nsmallest獲取前幾個最小值。“Python進階必讀的書是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。