【备战蓝桥杯】探索Python内置标准库collections的使用

](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)

🌈个人主页: Aileen_0v0
🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法
💫个人格言:“没有罗马,那就自己创造罗马~”

Our attitude toward life determineslife's attitude towards us.

文章目录

  • 标准库collections
    • Counter:计数器
    • Dequeue:双端队列
    • defaultdict:有默认值的字典
    • OrderedDict:有序字典

标准库collections

collections这个标准库中包含了很多的容器,这个库里面的工具是基于我们学过的容器如字典,元组扩展的。

Counter:计数器

Counter本身就是一个字典

无计数器的技术方法:

a = ["apple","banana","apple","cat","cat","cat","dog"]
b = {}
for x in a:b[x] = b.get(x,0) + 1
print(b)

运行结果:
在这里插入图片描述

用计数器的技术方法:

from collections import  Counter
a = ["apple","banana","apple","cat","cat","cat","dog"]
b =Counter(a)
print("type(b) = ",type(b))
print("b = ",b)

运行结果:
在这里插入图片描述
常见用法:

from collections import  Counter
a = Counter()               #空Counter
print(a)
a = Counter("Hello World")  #统计每个字符
print(a)
a = Counter([1,2,3,1,2])    #统计每个元素出现次数
print(a)

运行结果:
在这里插入图片描述
数学运算:

from collections import  Counter
c = Counter(a=3,b=1)
d = Counter(a=2,b=2)
print("c+d =",c+d)
print("c-d =",c-d)
print("c&d =",c&d) #与运算,取c和d的交集
print("c|d =",c|d) #并集

运行结果:
在这里插入图片描述

Dequeue:双端队列

大部分操作和list类似,但是删除和插入操作比list更高效
方法功能
append(x)添加x 到右端
appendleft(x)添加x到左端
pop()移去并且返回一个元素,deque 最右侧的那一个。
popleft()移去并且返回一个元素,deque 最左侧的那一个。
insert(i, x)在位置i插入X。
extend(iterable)扩展deque的右侧,通过添加iterable参数中的元素
extendleft(iterable)扩展deque的左侧,通过添加iterable参数中的元素。 注意,左添加时,在结果中iterable参数中的顺序将被反过来添加。
remove(value)移除找到的第一个 value。
clear()清空
copy()拷贝
count(x)计算deque中元素等于x的个数
index(x[,start[,stop]])返回x在deque中的位置(在索引start之后,索引stop之前)
reverse()将deque逆序排列。
rotate(n=1)向右循环移动n步。如果n是负数,就向左循环。
maxlenDeque的最大尺寸,如果没有限定就是None。
from collections import  deque
a = deque([1,2,3,4,1,4,2,4])
print("a = ",a)
#将整个列表向右挪一位
a.rotate(1)
print("a = ",a) #a =  deque([4, 1, 2, 3, 4, 1, 4, 2])
#将整个列表向左挪两位
a.rotate(-2) #a =  deque([4, 1, 2, 3, 4, 1, 4, 2])

defaultdict:有默认值的字典

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)

运行结果:
在这里插入图片描述

OrderedDict:有序字典

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

在这里插入图片描述
](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)

](https://img-home.csdnimg.cn/images/20220524100510.png#pic_center)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/412060.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何通过Burp Suite专业版构建CSRF PoC

Burp Suite是一款强大的渗透测试利器,可以利用它来高效的执行渗透攻击,接下来介绍如何通过Burp Suite Pro来构建CSRF PoC。 如果还没安装burp suite,请参阅【Burp Suite专业版本安装配置及使用指导 】 在Bupr中找到拦截的请求,右…

Ubuntu 22.04 Cron使用

需要定时处理的场景还是比较多的,比如信息推送、日志清理等。 这篇文章我们来说说如何使用cron来实现定时处理,以及监控任务的执行。 使用 Ubuntu中使用cron,要用到的命令是crontab。不加sudo时,处理的是个人的定时任务。当加上sudo时,处理的则是系统级别的定时任务。下…

公共用例库计划--个人版(四)功能改造与性能优化

1、任务概述 本次计划的核心任务是开发一个,个人版的公共用例库,旨在将各系统和各类测试场景下的通用、基础以及关键功能的测试用例进行系统性地归纳整理,并以提高用例的复用率为目标,力求最大限度地减少重复劳动,提升…

SpringBoot异常处理

1.SpringBoot异常处理 1.1.自定义错误页面 SpringBoot默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请…

leedcode刷题笔记day1

题目大意: 暴力解法 两个for循环(也是我一看到题目想到的方法) 枚举在数组中所有的不同的两个下标的组合逐个检查它们所对应的数的和是否等于 target 复杂度分析 时间复杂度:O(n2),这里 n 为数组的长度 空间复杂度:O(1)&#x…

新定义51单片机(RD8G37)实现测距测速仪

本文描述用新定义51单片机(RD8G37)超声波一体测距传感器实现简单的测距测速仪。 测距仪演示效果 新定义RD8G37Q48RJ开发板 超声波测距模块: 8位并口屏 1、main.c unsigned short timeConsuming0; unsigned int oldDistance;void rectClearS…

Javascript,到底要不要写分号?

小白随机在互联网上乱丢一些赛博垃圾,还望拨冗批评斧正。 要不要加分号? 先说结论:“不引起程序出错的前提下,加不加都可以,按自身习惯来。” 为什么JS可以不加分号? 实际上,行尾使用分号的风…

解决方案|镭速赋能影视行业数字化,电影高速分发技术打造一流传输体验!

中国电影产业链主要分为三部分,即上游制片,中游宣发,下游院线影院,互联网产业发展后衍生出线上票务平台作为产业终端。随着4K、3D、高帧率、高动态范围、广色域、沉浸式音频等新兴视听技术的发展与应用,高新技术格式电…

stm32内存分配博客笔记

原文: stm32内存分配 笔记: 1、向量表与代码段;根据Cortex-M3权威指南描述,系统复位后,在向量表异常0处保存的是堆栈起始地址,而后紧跟中断向量表 2、可以从链接脚本.ld文件中看到终端向量表第一个被链接…

Date,SimpleDateFormate类和Calendar类

目录 一、Date 二、SimleDateFormate类 作用 练习一 练习二 三、Calendar类 概述 Calendar小结 一、Date 构造方法说明public Date()创建Date对象,表示一个时间public Date(long date)创建Date对象,表示指定时间public void setTime(long time)设置…

服务器变矿机,该如何应对?

开始 恶意的挖矿程序会导致服务器cpu的异常占用&#xff0c;很让人讨厌。起初&#xff0c;我只是使用top命令显示出占用cpu不正常的进程&#xff0c;发现其中一个进程占用了百分之九十九点几&#xff0c;然后通过kill -9 <PID>命令干掉它。但总是过不了几天&#xff0c;…

VRPSolverEasy:支持VRP问题快速建模的精确算法Python包

文章目录 前言一步步安装免费版主要模块介绍1. depot point2. customer point3. links4. vehicle type VRPTW 算例数据说明模型建立输出求解状态及结果 前言 VRPSolverEasy 是用于车辆路径问题&#xff08;VRP&#xff09;的最先进的分支切割和定价算法求解器1&#xff0c;它的…