---今天参加周赛暴露了我的很多问题。记录一下今天学到的几个知识点:
一.快速的统计字符串里面每个字符出现的次数:
Counter类
Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和负数)。Counter类和其他语言的bags或multisets很相似。
1 创建
下面的代码说明了Counter类创建的四种方法:
c = Counter() # 创建一个空的Counter类
c = Counter('gallahad') # 从一个可iterable对象(list、tuple、dict、字符串等)创建
c = Counter({'a': 4, 'b': 2}) # 从一个字典对象创建
c = Counter(a=4, b=2) # 从一组键值对创建
2 计数值的访问与缺失的键
当所访问的键不存在时,返回0,而不是KeyError;否则返回它的计数。
计数值的访问Python
c = Counter("abcdefgab")
c["a"]
2
c["c"]
1
c["h"]
0
3 计数器的更新(update和subtract)
可以使用一个iterable对象或者另一个Counter对象来更新键值。
计数器的更新包括增加和减少两种。其中,增加使用update()方法:
- 计数器的更新(update)Python
c = Counter('which')
c.update('witch') # 使用另一个iterable对象更新
c['h']
d = Counter('watch')
c.update(d) # 使用另一个Counter对象更新
c['h']
- 减少则使用subtract()方法:
计数器的更新(subtract)Python
c = Counter('which')
c.subtract('witch') # 使用另一个iterable对象更新
c['h']
1
d = Counter('watch')
c.subtract(d) # 使用另一个Counter对象更新
c['a']
-1
4 键的删除
当计数值为0时,并不意味着元素被删除,删除元素应当使用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']