---今天參加周賽暴露了我的很多問(wèn)題藻懒。記錄一下今天學(xué)到的幾個(gè)知識(shí)點(diǎn):
一.快速的統(tǒng)計(jì)字符串里面每個(gè)字符出現(xiàn)的次數(shù):
Counter類(lèi)
Counter類(lèi)的目的是用來(lái)跟蹤值出現(xiàn)的次數(shù)。它是一個(gè)無(wú)序的容器類(lèi)型归敬,以字典的鍵值對(duì)形式存儲(chǔ)鄙早,其中元素作為key,其計(jì)數(shù)作為value陆爽。計(jì)數(shù)值可以是任意的Interger(包括0和負(fù)數(shù))扳缕。Counter類(lèi)和其他語(yǔ)言的bags或multisets很相似慌闭。
1 創(chuàng)建
下面的代碼說(shuō)明了Counter類(lèi)創(chuàng)建的四種方法:
c = Counter() # 創(chuàng)建一個(gè)空的Counter類(lèi)
c = Counter('gallahad') # 從一個(gè)可iterable對(duì)象(list驴剔、tuple、dict丧失、字符串等)創(chuàng)建
c = Counter({'a': 4, 'b': 2}) # 從一個(gè)字典對(duì)象創(chuàng)建
c = Counter(a=4, b=2) # 從一組鍵值對(duì)創(chuàng)建
2 計(jì)數(shù)值的訪問(wèn)與缺失的鍵
當(dāng)所訪問(wèn)的鍵不存在時(shí)惜互,返回0琳拭,而不是KeyError描验;否則返回它的計(jì)數(shù)。
計(jì)數(shù)值的訪問(wèn)Python
c = Counter("abcdefgab")
c["a"]
2
c["c"]
1
c["h"]
0
3 計(jì)數(shù)器的更新(update和subtract)
可以使用一個(gè)iterable對(duì)象或者另一個(gè)Counter對(duì)象來(lái)更新鍵值絮缅。
計(jì)數(shù)器的更新包括增加和減少兩種呼股。其中,增加使用update()方法:
- 計(jì)數(shù)器的更新(update)Python
c = Counter('which')
c.update('witch') # 使用另一個(gè)iterable對(duì)象更新
c['h']
d = Counter('watch')
c.update(d) # 使用另一個(gè)Counter對(duì)象更新
c['h']
- 減少則使用subtract()方法:
計(jì)數(shù)器的更新(subtract)Python
c = Counter('which')
c.subtract('witch') # 使用另一個(gè)iterable對(duì)象更新
c['h']
1
d = Counter('watch')
c.subtract(d) # 使用另一個(gè)Counter對(duì)象更新
c['a']
-1
4 鍵的刪除
當(dāng)計(jì)數(shù)值為0時(shí)吸奴,并不意味著元素被刪除马靠,刪除元素應(yīng)當(dāng)使用del蔼两。
鍵的刪除Python
c = Counter("abcdcba")
c
Counter({'a': 2, 'c': 2, 'b': 2, 'd': 1})
c["b"] = 0
c
Counter({'a': 2, 'c': 2, 'd': 1, 'b': 0})
del c["a"]
c
Counter({'c': 2, 'b': 2, 'd': 1})
二.快速的讓字符串變成列表
1.如果字符串中有可以用作間隔的字符,可以使用split()
('1 2 3').split()
['1', '2', '3']
2.直接list
list('asasdsfs')
['a', 's', 'a', 's', 'd', 's', 'f', 's']
list('12323')
['1', '2', '3', '2', '3']
3.使用迭代式
s = 'asasdada'
list = [i for i in s]
list
['a', 's', 'a', 's', 'd', 'a', 'd', 'a']