Python Cookbook (1-2) 好用的容器
1. 容器:
簡單來說,容器就是一種存放資料的空間,每種容器擺放資料的方式都不一樣。 Python 的容器簡單易用,選對容器還能增進程式存取資料的效能,降低 big O。
2. deque:
deque (本人稱為雙頭 queue),有兩個重要的特性,一是可從兩頭增減元素二是可以限制元素數量。
from collections import deque names = deque(maxlen=3) # 連塞三個 names.append("alice") names.append("bob") names.append("cat") print(names) # 再塞一個,踢除最舊的 names.append("dog") print(names) # 再塞一個,這次從左邊 names.appendleft("eve") print(names)
從左右 pop 出元素。
_ = names.pop() _ = names.popleft()
3. heapq:
import heapq nums = [10, 7, 1,3, 6, 2] heapq.heapify(nums) print(nums) Out: [1, 3, 2, 7, 6, 10]
heapify 是堆積排序的第一步,上例 heapify 後最小的值放在最上面,所以是 min heap。
形成 min heap 後我們就很容易取得最大或最小的前幾名。
heapq.nsmallest(3, nums) heapq.nlargest(3, nums)
4. 用 heapq sort 鍵值對:
test = [{"name": "a", "score":60}, {"name": "b", "score":30}, {"name": "c", "score":80}] heapq.nsmallest(2, test, key=lambda person: person["score"])
我們寫了一個 lambda 並要求以此為規則對 test 進行排序(想要反向排序只要加負號就行了)。
Reference
[1] David Beazley, Brian K. Jones, Python Cookbook, 3e , O'Reilly Media (2014)
留言
張貼留言