python cookbook 搜索和排序

1.當須要排序的時候,儘可能設法使用內建 Python 列表的 sort 方法;
2.當須要搜索的時候,儘可能設法使用內建的字典。
3.python  list.sort()方法:相比於手工構建一個輔助的元組列表,使用 sort 方法的 key=參數更加容易、更節省內存,並且速度也更快。
4.一般使用reduce(),map(),filter()要比使用字典、列表、集合內涵快一些
5.DSU 排序技術能夠用於任意數目的主鍵。只要願意,能夠給元組增長足夠多的鍵,固然它們的順序得按照你但願進行的比較順序進行排列。能夠給列表的 sort 方法傳遞一個可選的命名參數 key,並且它能夠被調用,做用於列表中的每一個元素並得到用於排序的鍵。若是傳遞這樣的一個參數,排序會在內部使用 DSU。
6.list的remove()方法,調用會線性地搜索整個列表以獲取要刪除的元素。一句話,若是須要 Python 中的僞隨機行爲,須要的是標準庫的 randompopitem 模塊。
7.list的sort方法的時間複雜度是O(nlogn)
8.當使用heapq模塊時,你調用 heappop 從列表中獲取元素時,老是獲得當前最小的元素,而後全部節點會被調整,以確保堆特性仍然有效。每次經過 heappush 添加元素,或者經過heappop 刪除元素,它們所花費的時間都正比於當前列表長度的對數(O(logN),準確地說)。只須要付出一點點代價(從整體來講,代價也很是小)。
9.當須要進行優化時,首先進行測量。不該該僅僅根據基本原理選擇優化的方式,由於真實的性能數據變化無窮,即便在兩個兼容的發行版本之間也會有很大的差別。
10.若是列表 L 已是排序完畢的狀態,則 Python 標準庫提供的 bisect 模塊能夠很容易地檢查出元素 x 是否在 L 中,也能夠很容易的添加元素使其處於新的排序狀態,bisect模塊採用二分查找方法,查找元素。
相關文章
相關標籤/搜索