Counter(計數器) 是一個字典的子類,存儲形式同樣為字典,其中存儲的鍵為字典的元素,值為元素出現的次數,在使用之前我們需要先導入文件 import collections 初始化一個計數器 most_common(self,n) 取出元素最多的前n項 sorted(c) 給計數器排序 ''.j ...
Counter(計數器)
是一個字典的子類,存儲形式同樣為字典,其中存儲的鍵為字典的元素,值為元素出現的次數,在使用之前我們需要先導入文件 import collections
- 初始化一個計數器
import collections # 初始化一個計數器 c = collections.Counter('sldfjoaoaufdlfuaof') print(c) # Counter({'f': 4, 'o': 3, 'a': 3, 'd': 2, 'u': 2, 'l': 2, 'j': 1, 's': 1})
- most_common(self,n) 取出元素最多的前n項
import collections # most_common(self,n) 取出計數器總元素最多的前n項 c = collections.Counter('sldfjoaoaufdlfuaof') d = c.most_common(3) print(d) # [('f', 4), ('a', 3), ('o', 3)]
- sorted(c) 給計數器排序
import collections # sorted(c) 給計數器排序 c = collections.Counter('sldfjoaoaufdlfuaof') print(sorted(c)) # ['a', 'd', 'f', 'j', 'l', 'o', 's', 'u']
- ''.join(sorted(c.elements())) 排序,列印成字元串形式
- elements(c) 計數器所有元素
import collections # ''.join(sorted(c.elements())) 相當於排序,列印成字元串 # c.elements() 返回所有元素 c = collections.Counter('sldfjoaoaufdlfuaof') e = ''.join(c) print(e) # ldfjosau f = ''.join(sorted(c.elements())) print(f) # aaaddffffjllooosuu
- sum(*args, **kwargs) 增加
- sum(c.values()) c字典所有元素個數
import collections # sum(c.values()) 所有值個數 c = collections.Counter('sldfjoaoaufdlfuaof') g = sum(c.values()) print(g) # 18
- c['a'] c字典中a元素出現次數
import collections # c['a'] 字元a出現的次數 c = collections.Counter('sldfjoaoaufdlfuaof') r = c['a'] print(r) # 3 for elem in 'shazam': c[elem] += 1 d = c['a'] print(d) # 5 del c['a'] print(c) # Counter({'f': 4, 'o': 3, 'l': 2, 'u': 2, 's': 2, 'd': 2, 'z': 1, 'm': 1, 'h': 1, 'j': 1})
- update(*args, **kwds) 更新計數器
import collections
# update 更新計數器 c = collections.Counter('sldfjoaoaufdlfuaof') d = collections.Counter('aaaaasimsalabim') c.update(d) print(c['a']) # 10
- clear(self) 清除所有參數
import collections # clear() c = collections.Counter('sldfjoaoaufdlfuaof') c.clear() print(c) # Counter()
- subtract(*args, **kwds) 刪除與另一個交集後的子集
import collections # subtract(*args, **kwds):刪除與另一個計數器的交集 c = collections.Counter('which') c.subtract('witch') print(c) # Counter({'h': 1, 'w': 0, 'c': 0, 'i': 0, 't': -1})
OrderDict(有序字典)
OrderedDict 有序字典,是對字典的補充,他能記錄字典的添加順序,相當於字典和列表的組合,使用之前需要導入依賴類 import collections
- 初始化一個有序字典
import collections # 初始化一個有序字典 order = collections.OrderedDict() print(order) # OrderedDict() order['k1'] = 'v1' order['k2'] = 'v2' order['k3'] = 'v3' print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
- fromkeys(cls, S, v=None) s:定義一個鍵列表,用於字典的鍵準備準備的值的列表, v:表示將鍵設置的值 預設是None
import collections # 初始化一個有序字典 order = collections.OrderedDict() print(order) # OrderedDict() order['k1'] = 'v1' order['k2'] = 'v2' order['k3'] = 'v3' print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]) # fromkeys(cls, S, v=None) s:定義一個鍵列表,用於字典的鍵準備準備的值的列表, v:表示將鍵設置的值 預設是None s = ['v1','k2','43'] order1 = order.fromkeys(s,'Hello') print(order1) # OrderedDict([('k1', 'Hello'), ('k2', 'Hello'), ('k3', 'Hello')])
- items(self, *args, **kwargs) 所有的元素
import collections # 初始化一個有序字典 order = collections.OrderedDict() print(order) # OrderedDict() order['k1'] = 'v1' order['k2'] = 'v2' order['k3'] = 'v3' print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]) # items(self, *args, **kwargs) 所有的元素 order2 = order.items() print(order2) # odict_items([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]
- keys(self, *args, **kwargs) 所有的key
import collections # 初始化一個有序字典 order = collections.OrderedDict() print(order) # OrderedDict() order['k1'] = 'v1' order['k2'] = 'v2' order['k3'] = 'v3' print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]) # keys(self, *args, **kwargs) 所有的key order3 = order.keys() print(order3) # odict_keys(['k1', 'k2', 'k3'])
- move_to_end(self, *args, **kwargs) 將指定元素移動到最後,如果指定元素不存在就會報錯
import collections # 初始化一個有序字典 order = collections.OrderedDict() print(order) # OrderedDict() order['k1'] = 'v1' order['k2'] = 'v2' order['k3'] = 'v3' print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]) # move_to_end(self, *args, **kwargs) 將指定元素移動到最後,如果指定元素不存在就會報錯 order.move_to_end('k1') print(order) # OrderedDict([('k2', 'v2'), ('k3', 'v3'), ('k1', 'v1')])
- pop(self, k, d=None) 彈出指定元素,同時可以接受彈出元素的值
import collections # 初始化一個有序字典 order = collections.OrderedDict() print(order) # OrderedDict() order['k1'] = 'v1' order['k2'] = 'v2' order['k3'] = 'v3' print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]) # pop(self, k, d=None) 彈出指定元素,同時可以接受彈出元素的值 order4 = order.pop('k2') print(order4) # v2 print(order) # OrderedDict([('k3', 'v3'), ('k1', 'v1')])
- popitem(self) 彈出字典中鍵值對,可以定義一個變數用來接收彈出的建制度,貌似彈出的建制度不是按照順序彈出來的
# 初始化一個有序字典 order = collections.OrderedDict() print(order) # OrderedDict() order['k1'] = 'v1' order['k2'] = 'v2' order['k3'] = 'v3' print(order) # OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]) # popitem(self) 彈出字典中鍵值對,可以定義一個變數用來接收彈出的建制度,貌似彈出的建制度不是按照順序彈出來的 order5 = order.popitem() print(order) # OrderedDict([('k3', 'v3')]) print(order5) # ('k1', 'v1')
- setdefault(self, k, d=None) 用來查找字典中鍵,如果字典中不存在key就預設為d
import collections order_default = collections.OrderedDict() order_default['k100'] = '034' order_default.setdefault('k1',['hello','Python']) print(order_default['k1']) # ['hello', 'Python'] print(order_default['k100']) # 034
- update(self, *args, **kwargs) 更新
import collections order = collections.OrderedDict() order['k1'] = 'v1' order['k2'] = 'v2' order['k3'] = 'v3' order_default.update(order) print(order_default) # OrderedDict([('k100', '034'), ('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
- values(self, *args, **kwargs) 所有的值
import collections order = collections.OrderedDict() order['k1'] = 'v1' order['k2'] = 'v2' order['k3'] = 'v3' order_default.update(order) print(order_default) # OrderedDict([('k100', '034'), ('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]) # values(self, *args, **kwargs) 所有的值 print(order_default.values()) # odict_values(['034', 'v1', 'v2', 'v3'])
- defalultdict(預設字典)
# 預設字典 defaultdict 表示其值預設為一個類型 my_defaulf = collections.defaultdict(list) my_defaulf['k1'].append('v1') print(my_defaulf) # defaultdict(<class 'list'>, {'k1': ['v1']})
- namedtuple(可命名元祖)
# 可命名元祖 ,可命名元祖是屬於collections類 Mytuple = collections.namedtuple('Mytuple',['name', 'age', 'email']) f = Mytuple('wang','12','[email protected]') print(f.name) # wang print(f.age) # 12 print(f.email) # [email protected]
- deque(雙向隊列)
雙向隊列,相當於一個列表,可以從隊列的兩端來操作,同樣在使用之前我們需要先導入 import collections
- 初始化
init_deque = collections.deque() print(init_deque) # deque([])
- append(self, *args, **kwargs) 添加元素
import collections init_deque = collections.deque() print(init_deque) # deque([]) # append(self, *args, **kwargs) 添加元素 init_deque.append('sdfasd') print(init_deque) # deque(['sdfasd']) 一次只能添加一個元素 init_deque.append(1) init_deque.append(2) init_deque.append(3) print(init_deque) # deque(['sdfasd', 1, 2, 3]) 預設是向後添加元素
- appendleft(self, *args, **kwargs) 想左添加元素
init_deque.appendleft(4) print(init_deque) # deque([4, 'sdfasd', 1, 2, 3])
- clear(self, *args, **kwargs) 清除
- copy(self, *args, **kwargs) 拷貝
- count(self, value) 計算指定值(value)的個數
init_count = init_deque.count(4) print(init_deque) # deque([4, 'sdfasd', 1, 2, 3]) print(init_count) # 1
- extend(self, *args, **kwargs) 在右邊擴展,同時會將傳入的參數拆分成元素來添加
init_deque.extend('100') print(init_deque) # deque([4, 'sdfasd', 1, 2, 3, '1', '0', '0'])
- extendleft(self, *args, **kwargs) 會將傳入的參數拆分成元素來添加到左邊,完全倒序,最右邊的元素添加到最左邊
init_deque.extendleft('789') print(init_deque) # deque(['9', '8', '7', 4, 'sdfasd', 1, 2, 3, '1', '0', '0'])
- index(self, value, start=None, stop=None) 指定值在指定範圍內的下標 預設是整個隊列
init_index = init_deque.index(1) print(init_index) # 5
- insert(self, index, p_object) 在指定下標插入指定元素
init_deque.insert(5,'567') print(init_deque) # deque(['9', '8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0', '0'])
- pop(self, *args, **kwargs) 從右邊彈出一個元素 同時可以接收彈出的元素
print(init_deque) # deque(['9', '8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0', '0']) init_pop = init_deque.pop() print(init_deque) # deque(['9', '8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0']) print(init_pop) # 0
- popleft(self, *args, **kwargs) 彈出最左邊的元素
print(init_deque) # deque(['9', '8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0']) init_popleft = init_deque.popleft() print(init_deque) # deque(['8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0']) print(init_popleft) # 9
- remove(self, value) 移除在隊列中出現的第一個指定的值
print(init_deque) # deque(['8', '7', 4, 'sdfasd', '567', 1, 2, 3, '1', '0']) init_deque.remove(1) print(init_deque) # deque(['8', '7', 4, 'sdfasd', '567', 2, 3, '1', '0'])
- reverse(self) 隊列反向排序
print(init_deque) # deque(['8', '7', 4, 'sdfasd', '567', 2, 3, '1', '0']) init_deque.reverse() print(init_deque) # deque(['0', '1', 3, 2, '567', 'sdfasd', 4, '7', '8'])
- rotate(self, *args, **kwargs) 將指定元素向前移動n個位置,如果n沒有設置就預設移動到左邊一個位置,但是n怎麼設置還沒搞定
print(init_deque) # deque(['0', '1', 3, 2, '567', 'sdfasd', 4, '7', '8']) init_deque.rotate('567') print(init_deque) # deque(['0', '1', 3, 2, '567', 'sdfasd', 4, '7', '8'])
- Queue(單項隊列)
單項隊列,只能在一個方向上操作,先進先出策略,使用時導入 import queue
- 初始化
import queue # 單項隊列,只能在一個方向上操作,先進先出原則 init_queue = queue.Queue() print(init_queue) # <queue.Queue object at 0x101379128> 怎麼好像是記憶體地址呢
- put(self, item, block=True, timeout=None) 向隊列添加元素
init_queue.put('a') print(init_queue) # <queue.Queue object at 0x101b79748> init_queue.put('b') init_queue.put('c')
- qsize(self) 隊列總元素個數
# qsize(self) 隊列總元素個數 print(init_queue.qsize()) # 3
- empty(self) 如果返回時Ture 說明是空,其他情況是False,不確定一定有元素
# empty(self) 如果返回時Ture 說明是空,其他情況是False,不確定一定有元素 init_empty = init_queue.empty() print(init_empty) # False
- get(self, block=True, timeout=None) 往外拿元素,相當於remove
# get(self, block=True, timeout=None) 往外拿元素,相當於remove init_geta = init_queue.get() print(init_geta) # a print(init_queue.qsize()) # 2
- init_queue_max = queue.Queue(maxsize=3) 最多存放元素個數為3個,多餘的put進去的都會處於等待狀態