蓝桥杯python库math、collections

2023-12-20 14:50:20

Counter:计数器

# 用于计数,看作一个dict
a = ['apple', 'banana', 'apple', 'cat', 'cat', 'cat', 'dog']
b = Counter(a)
print(type(b))
print(b)
# 可以直接对列表统计每个元素出现的次数

结果
<class 'collections.Counter'>
Counter({'cat': 3, 'apple': 2, 'banana': 1, 'dog': 1})
a = Counter('Hello World')
b = Counter([1, 2, 3, 1, 2])
print(a)
print(b)

Counter({'l': 3, 'o': 2, 'H': 1, 'e': 1, ' ': 1, 'W': 1, 'r': 1, 'd': 1})
Counter({1: 2, 2: 2, 3: 1})

Counter的常用函数(方法)

most_common(k):筛选出现频率topk

elements():返回一个迭代器,每个元素重复对应次数

clear():清空

a = Counter('Hello World')
print(a)
print(a.most_common(2))
print(list(a.elements()))
print(a.keys())
print(a.values())
a.clear()
print(a)
# 利用赋值或字典初始化每个元素和出现次数
c = Counter(a=3, b=1)
d = Counter(a=2, b=2)
print(c+d)
print(c|d)
print(c&d)
结果:
Counter({'l': 3, 'o': 2, 'H': 1, 'e': 1, ' ': 1, 'W': 1, 'r': 1, 'd': 1})
[('l', 3), ('o', 2)]
['H', 'e', 'l', 'l', 'l', 'o', 'o', ' ', 'W', 'r', 'd']
dict_keys(['H', 'e', 'l', 'o', ' ', 'W', 'r', 'd'])
dict_values([1, 1, 3, 2, 1, 1, 1, 1])
Counter()
Counter({'a': 5, 'b': 3})
Counter({'a': 3, 'b': 2})
Counter({'a': 2, 'b': 1})

deque双端队列

双端队列大部分功能与list类似,但是插入和删除操作比list高效

from collections import deque

a = deque([1, 2, 3, 4])
a.append(5)
a.appendleft(0)
print(a)
a.popleft()
a.pop()
print(a)
a.extend([2,3,4])
print(a)
a.remove(2)
print(a)

# 结果
deque([0, 1, 2, 3, 4, 5])
deque([1, 2, 3, 4])
deque([1, 2, 3, 4, 2, 3, 4])
deque([1, 3, 4, 2, 3, 4])

????????

a = deque([1, 2, 3, 4, 1, 4, 2, 4])
a.reverse()
print(a)
print(a.count(4))
a.rotate(3)
print(a)
print('4所在的下标=', a.index(4))

# 结果
deque([4, 2, 4, 1, 4, 3, 2, 1])
3
deque([3, 2, 1, 4, 2, 4, 1, 4])
4所在的下标= 3

defaultdict:有默认值的字典

在字典中获取一个key有两种方法,第一种get ,第二种通过[ ]获取

使用dict时,如果引用的key不存在,就会抛出KeyError。

如果希望key不存在时,返回一个默认值,就可以用defaultdict。

from collections import defaultdict
d=defaultdict(int)
print(d['x'])
d=defaultdict(list)
print(d['x'])
d=defaultdict(set)
print(d['x'])
d=defaultdict(dict)
print(d['x'])

# 结果
0
[]
set()
{}
from collections import defaultdict

s = [(' yellow', 1), (' blue', 2), (' yellow ', 3), ('blue', 4), ('red', 1)]
d = defaultdict(list)
for k, v in s:
    d[k].append(v)
print(d)

defaultdict(<class 'list'>, {' yellow': [1], ' blue': [2], ' yellow ': [3], 'blue': [4], 'red': [1]})

OderedDict有序字典

与字典基本相同, key按照插入的顺序排序

popitem()函数:3.7以下版本的字典随机删除一个key-value对然后返回;3.7及以上版本删除最后一个元素返回

OrderedDict:可以指定参数last,last默认为True,删除最后一个;否则删除第一个

from collections import OrderedDict

data = [('a', 1), ('b', 2), ('c', 3)]
d = OrderedDict(data)
print(d)
while len(d) != 0:
    print('删除的元素为:', d.popitem(False))
    print(d)

# 
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
删除的元素为: ('a', 1)
OrderedDict([('b', 2), ('c', 3)])
删除的元素为: ('b', 2)
OrderedDict([('c', 3)])
删除的元素为: ('c', 3)
OrderedDict()

move_to_end(key, last=True)函数:(特点)

OrderedDict将key移动到任一端。last=True表示右端,否则为左端。key不存在则报错。

????????

data = [('a', 1), ('b', 2), ('c', 3)]
d = OrderedDict(data)
print(d)
d.move_to_end('a')
print(d)
d.move_to_end('c', False)
print(d)

# 
OrderedDict([('a', 1), ('b', 2), ('c', 3)])
OrderedDict([('b', 2), ('c', 3), ('a', 1)])
OrderedDict([('c', 3), ('b', 2), ('a', 1)])

文章来源:https://blog.csdn.net/qq_64685283/article/details/135080253
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。