Python collections模块

collections 模块是Python标准库中提供的一个模块,用于提供一些额外的数据容器和工具,扩展了内置的数据类型。它包含了一些有用的类和函数,用于处理各种数据结构和算法问题。下面是 collections 模块中常用的几个类的详细介绍:

1.namedtuple(具名元组):

namedtuple 是一个工厂函数,用于创建具有字段名的元组。它类似于普通的元组,但可以通过字段名进行访问,而不仅仅是通过索引。namedtuple 可以用于创建轻量级的数据对象,比如表示一条记录或数据点。使用 namedtuple 可以提高代码的可读性和易用性。

from collections import namedtuple

# 创建一个具名元组类 Point,包含 x 和 y 两个字段
Point = namedtuple('Point', ['x', 'y'])

# 创建具名元组对象
p = Point(1, 2)

# 访问具名元组中的字段
print(p.x)  # 输出: 1
print(p.y)  # 输出: 2

2.deque(双端队列):

deque 是一个双端队列,支持从两端高效地添加和删除元素。与列表相比,deque 在执行插入和删除操作时具有更好的性能,特别是在大型数据集上。deque 还提供了一些附加的方法,如旋转、扩展和反转等。

from collections import deque

# 创建一个双端队列
dq = deque([1, 2, 3])

# 从右侧添加元素
dq.append(4)

# 从左侧添加元素
dq.appendleft(0)

# 从右侧弹出元素
dq.pop()  # 返回 4

# 从左侧弹出元素
dq.popleft()  # 返回 0

# 旋转队列,将右侧的元素移动到左侧
dq.rotate(1)

3.Counter(计数器):

Counter 是一个简单的计数器类,用于统计可哈希对象的出现次数。它可以接受可迭代对象作为输入,并返回一个字典,其中包含对象作为键,出现次数作为值。Counter 还提供了一些方便的方法,如获取最常见的元素、计算总数等 

from collections import Counter

# 创建一个计数器
c = Counter(['a', 'b', 'a', 'c', 'b', 'a'])

# 统计元素的个数
print(c['a'])  # 输出: 3

# 获取最常见的元素和对应的次数
print(c.most_common(2))  # 输出: [('a', 3), ('b', 2)]

4.defaultdict(默认字典):

defaultdict 是一个字典的子类,它在访问不存在的键时返回一个默认值。通过指定默认工厂函数,可以自定义默认值的类型。defaultdict 在处理缺失键时非常有用,可以避免键错误和异常。

from collections import defaultdict

# 创建一个默认字典,指定默认值为 0
d = defaultdict(int)

# 访问不存在的键,默认返回 0
print(d['a'])  # 输出: 0

# 计数器示例
s = 'abracadabra'
counter = defaultdict(int)
for char in s:
    counter[char] += 1

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数学】【位运算】LeetCoce810. 黑板异或游戏

作者推荐 视频算法专题 本文涉及知识点 数学 位运算 LeetCoce810. 黑板异或游戏 黑板上写着一个非负整数数组 nums[i] 。 Alice 和 Bob 轮流从黑板上擦掉一个数字,Alice 先手。如果擦除一个数字后,剩余的所有数字按位异或运算得出的结果等于 0 的话…

代码随想录day19(1)二叉树:完全二叉树节点个数(leetcode222)

题目要求:求一个完全二叉树的节点个数 思路:首先完全二叉树可以用普通二叉树的方法来求,但是需要遍历所有的节点。 但是对于完全二叉树来说,只有最底层右侧的节点可能没满,其余每层节点都达到了最大值。所以我们可以…

浏览器同源策略及跨域问题

同源策略:同源策略是一个重要的安全策略,它用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。 同源策略的作用:保护浏览器中网站的安全,限制ajax只…

YOLO v8:目标检测的最新王者

本文来自公众号“AI大道理” —————— Yolov8是Yolo系列模型的最新王者,各种指标全面超越现有目标检测模型。 Yolov8借鉴了Yolov5、Yolov6、YoloX等模型的设计优点,全面改进了Yolov5模型结构,同时保持了Yolov5工程化简洁易用的优势。 …

为什么要用scrapy爬虫库?而不是纯python进行爬虫?

为什么要用scrapy爬虫库?而不是纯python进行爬虫? Scrapy的优点Scrapy节省的工作使用纯Python编写爬虫的不足 Scrapy是一个使用Python编写的开源和协作的web爬虫框架,它被设计用于爬取网页数据并从中提取结构化数据。Scrapy的强大之处在于其广…

IBFKJ-299 8AI/AO,DI/DO开关量模拟量同时数据采集

产品特点: ● DC12-30V宽压供电; ● RS485通讯光电隔离,输入光耦隔离,继电器输出触点隔离; ●通讯接口支持RS232、RS485; ●支持标准Modbus RTU/TCP/ASCII协议 ●具有闪开、闪断功能,可以在…

C#操作像素替换图片中的指定颜色

待处理的图片,其特征是包含有限数量颜色,不同的颜色相互交叉使用,相同颜色并未完全连贯,需要将图片中的指定颜色替换为另一颜色。虽然很多图片处理工具都支持类似操作,最后还是自己动手编写简单的处理程序。   程序的…

8-图像放大

其实,就是开辟一个zoomwidth,zoomheight的内存,再分别赋值即可。 void CDib::Maginify(float xZoom, float yZoom) { //指向原图像指针 LPBYTE p_data GetData(); //指向原像素的指针 LPBYTE lpSrc; //指向缩放图像对应像素的指针 LPBYTE l…

当word表格复制到excel出现分行问题的解决小技巧

在word文档中将^p(回车符号)替换成其他,比如 全选复制粘贴到excel中后分行问题已经解决,将换回原本的回车即可,ctrshiftj(回车)

新零售SaaS架构:什么是线上商城系统?

零售商家为什么要建设线上商城 传统的实体门店服务范围有限,只能吸引周边500米内的消费者。因此,如何拓展服务范围,吸引更多消费者到店,成为了店家迫切需要解决的问题。 缺乏忠实顾客,客户基础不稳,往往是…

Git提交代码进入coding

安装Git后建一个文件在文件里右键点击Git Bash使用命令配置用户名和邮箱git config --global user.name "你的用户名"和git config --global user.email "你的邮箱"命令git init来初始化,自动将当前仓库设置为master创建一个项目(一…

Linux - 安装 nacos(详细教程)

目录 一、简介二、安装前准备三、下载与安装四、基本配置五、单机模式 一、简介 官网:https://nacos.io/ GitHub:https://github.com/alibaba/nacos Nacos 是阿里巴巴推出的一个新开源项目,它主要是一个更易于构建云原生应用的动态服务发现…

什么是接口

接口定义 接口的定义分为接口的声明和接口体 接口构成 接口声明: ① 声明:关键字interface ② 格式:interfac接口名字 接口体 ① 两部分:常量和方法定义。 ② 内容:仅声明抽象方法, 不实现方法(没有方法体…

如何实现幂等性,java多线程面试题及答案整理

订单创建接口,第一次调用超时了,然后调用方重试了一次。是否会多创建一笔订单? 订单创建时,我们需要去扣减库存,这时接口发生了超时,调用方重试了一次。是否会多扣一次库存? 当这笔订单开始支…

【单调栈】代码随想录算法训练营第五十九天 |503.下一个更大元素II, 42. 接雨水 (待补充)

503.下一个更大元素II 1、题目链接:. - 力扣(LeetCode) 2、文章讲解:代码随想录 3、题目: 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个…

使用R语言计算模拟二项分布

二项分布理论 二项分布是一种离散概率分布,描述了在n次独立重复的伯努利试验中成功的次数的概率分布。其中,每次试验的结果只有两个可能:成功或失败,且每次试验的成功概率p是相同的。 具体来说,如果随机变量X表示在n次…

婚恋源码-婚恋交友系统-源码婚恋交友系统-APP小程序H5公众号-源码交付-支持二开!

本婚恋系统是一款专门为单身人士打造的相亲交友软件,所有用户都必须要身份认证,还有职业认证、学历认证等等全方位认证。智能匹配是本婚恋系统的核心功能,当我们完善好个人资料通过审核,系统会根据个人信息进行匹配,自…

3.1_8 两级页表

文章目录 3.1_8 两级页表(一)单级页表存在的问题(二)如何解决单级页表的问题?(三)两级页表的原理、地址结构(四)如何实现地址变换(五)需要注意的几…

SpringBoot之Bean扫描、Bean注册

目录 Bean扫描 Bean注册 Bean lmport 自定义注解 注册条件 Bean扫描 Bean扫描有两种方式 1、标签:<context:component-scan base-package"com.mybatis"/> 2、注解: ComponentScan(basePackages "com.mybatis") springboot启动类注解可以自…

Java垃圾收集器工作原理、优缺点以及使用注意事项

0.前言 Java 垃圾收集器 (GC) 是自动内存管理组件&#xff0c;负责回收不再使用的对象占用的内存。它们在管理 Java 的动态内存分配方面发挥着至关重要的作用&#xff0c;使开发人员能够专注于应用程序逻辑&#xff0c;而无需手动释放内存。JVM运行时需要GC来防止内存泄漏、优…