自學Python之路-Python基礎+模塊+面向對象
自學Python之路-Python網絡編程
自學Python之路-Python併發編程+數據庫+前端
自學Python之路-djangohtml
正則表達式自己是一種小型的、高度專業化的編程語言,而在python中,經過內嵌集成re模塊,程序員們能夠直接調用來實現正則匹配。正則表達式模式被編譯成一系列的字節碼,而後由用C編寫的匹配引擎執行。前端
在內置數據類型(dict、list、set、touple)基礎上,collections模塊還提供了幾我的外的數據類型:python
14.1 計數器(Counter)程序員
Counter做爲字典dicit()的一個子類用來進行hashtable計數,將元素進行數量統計,計數後返回一個字典,鍵值爲元素,值爲元素個數正則表達式
most_common(int) | 按照元素出現的次數進行從高到低的排序,返回前int個元素的字典 |
elements | 返回通過計算器Counter後的元素,返回的是一個迭代器 |
update | 和set集合的update同樣,對集合進行並集更新 |
substract | 和update相似,只是update是作加法,substract作減法,從另外一個集合中減去本集合的元素 |
iteritems | 返回由Counter生成的字典的全部item |
iterkeys | 返回由Counter生成的字典的全部key |
itervalues | 返回由Counter生成的字典的全部value |
from collections import Counter str = "abcbcaccbbad" li = ["a","b","c","a","b","b"] d = {"1":3, "3":2, "17":2} #1. Counter獲取各元素的個數,返回字典 print ("Counter(s):", Counter(str)) print ("Counter(li):", Counter(li)) print ("Counter(d):", Counter(d)) #2. most_common(int)按照元素出現的次數進行從高到低的排序,返回前int個元素的字典 d1 = Counter(str) print ("d1.most_common(2):",d1.most_common(2)) #3. elements返回通過計算器Counter後的元素,返回的是一個迭代器 print ("sorted(d1.elements()):", sorted(d1.elements())) print ('''("".join(d1.elements())):''',"".join(d1.elements())) #4. 如果字典的話返回value個key d2 = Counter(d) print("如果字典的話返回value個key:", sorted(d2.elements()))
14.2 雙向隊列(deque)數據庫
使用list存儲數據時,按索引訪問元素很快,可是插入和刪除元素就很慢了,由於list是線性存儲(有順序的),數據量大的時候,插入和刪除效率很低。django
duque就是爲了高效實現插入和刪除操做的雙向列表,適用於隊列和棧。 編程
#隊列 import queue q = queue.Queue() q.put([1,2,3]) q.put(5) q.put(6) print(q) # print(q.get()) print(q.get()) print(q.get()) print(q.get()) # 取完3個數以後,阻塞 print(q.qsize()) # 取q的數值
# 隊列 from collections import deque dq = deque([1,2]) dq.append('a') # 從後面放數據 [1,2,'a'] dq.appendleft('b') # 從前面放數據 ['b',1,2,'a'] dq.insert(2,3) #['b',1,3,2,'a'] print(dq.pop()) # 從後面取數據 a print(dq.pop()) # 從後面取數據 2 print(dq.popleft()) # 從前面取數據 b print(dq)
append | 隊列右邊添加元素 |
appendleft | 隊列左邊添加元素 |
clear | 清空隊列中的全部元素 |
count | 返回隊列中包含value的個數 |
extend | 隊列右邊擴展,能夠是列表、元組或字典,若是是字典則將字典的key加入到deque |
extendleft | 同extend,在左邊擴展 |
pop | 移除並返回隊列右邊的元素 |
popleft | 移除並返回隊列左邊的元素 |
remove(value) | 移除隊列第一個出現的元素 |
reverse | 隊列的全部元素進行反轉 |
rotate(n) | 對隊列數進行移動 |
14.3 默認字典(defaultdict)
網絡
默認字典,字典的一個子類,繼承全部字典的方法,默認字典在進行定義初始化的時候得指定字典值有默認類型。併發
from collections import defaultdict d = defaultdict(lambda : 5) print(d['k'])
14.4 有序字典(OrderedDict)
使用dict時,key是無序的,在對dict作迭代的時候,咱們沒法肯定key的順序。
若是要保持key的順序,就能夠採用orderedDict。
from collections import OrderedDict od = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) print(od) # OrderedDict的Key是有序的 print(od['a']) for k in od: print(k)
14.5 可命名元組(namedtuple)
咱們知道tuple是不可變集合,例如,一個點的二維座標能夠表示成p=(1,2),可是這樣很難看出是一個點的座標,全部這時可採用namedtuple。
from collections import namedtuple Point = namedtuple('point',['x','y','z']) p1 = Point(1,2,3) p2 = Point(3,2,1) print(p1.x) print(p1.y) print(p1,p2)
#花色和數字 from collections import namedtuple Card = namedtuple('card',['suits','number']) c1 = Card('紅桃',2) print(c1) print(c1.number) print(c1.suits)