前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蓝桥杯python库math、collections

蓝桥杯python库math、collections

作者头像
@小森
发布2024-03-15 11:09:26
940
发布2024-03-15 11:09:26
举报
文章被收录于专栏:xiaosen

Counter:计数器

代码语言:javascript
复制
# 用于计数,看作一个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})
代码语言:javascript
复制
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():清空

代码语言:javascript
复制
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)
代码语言:javascript
复制
结果:
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高效

代码语言:javascript
复制
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])
代码语言:javascript
复制
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。

代码语言:javascript
复制
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()
{}
代码语言:javascript
复制
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,删除最后一个;否则删除第一个

代码语言:javascript
复制
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不存在则报错。

代码语言:javascript
复制
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)])
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档