Python中的常用库
一、collections
collections是 Python 标准库中的一个模块,提供了一些专门的容器数据类型,能够帮助你更高效地处理常见的数据结构操作。
1、Counter
Counter 是一个字典的子类,用于计数可哈希对象。它会统计对象的出现次数,并能快速获取某个元素出现的次数。
特点:
- 它的键是可哈希的元素,值是该元素的计数。
- 可以使用常见的字典操作,也支持一些特定的方法,如
.most_common()获取出现频率最高的元素。
from collections import Counter# 计数元素出现次数
counter = Counter(['a', 'b', 'c', 'a', 'b', 'a'])
print(counter) # 输出: Counter({'a': 3, 'b': 2, 'c': 1})# 获取出现频率最高的两个元素
print(counter.most_common(2)) # 输出: [('a', 3), ('b', 2)]
2、defaultdict
defaultdict 是 dict 类的一个子类,它会为字典中不存在的键提供一个默认值。defaultdict 在查找时,不会抛出 KeyError 异常,而是返回一个默认值。
特点:
- 需要指定一个工厂函数来定义默认值。
- 工厂函数可以是任何可调用对象,如
int、list、set等。
from collections import defaultdict# 创建一个默认值为 0 的字典
dd = defaultdict(int)
dd['apple'] += 1
dd['banana'] += 2
print(dd) # 输出: defaultdict(<class 'int'>, {'apple': 1, 'banana': 2})
【补充】字典相关操作
①dic.get(key, default=None):返回指定键的值,如果键不在字典中返回 default 设置的默认值
②sorted(dic):用于对 字典的键(keys) 进行排序,并返回一个 排序后的键列表。它不会对字典本身进行排序,而是返回一个新的 排序后的列表,列表中只包含键。
③sorted(dic.items(), key=lambda x: x[1]):按照值value大小进行排序
3、deque
deque(双端队列)是一个可以从两端快速插入和删除元素的容器。相比于列表(list),deque 在两端操作的时间复杂度是常数时间 O(1),而 list 在两端操作的时间复杂度是 O(n)。
特点:
- 适用于需要频繁进行队列或栈操作的场景。
- 提供了
.append()、.appendleft()、.pop()、.popleft()等方法。
from collections import deque# 创建一个双端队列
dq = deque([1, 2, 3])
dq.append(4) # 从右侧添加
dq.appendleft(0) # 从左侧添加
print(dq) # 输出: deque([0, 1, 2, 3, 4])dq.pop() # 从右侧删除
dq.popleft() # 从左侧删除
print(dq) # 输出: deque([1, 2, 3])
二、处理字符串
1、ord()
print("A 对应的 ASCII 值为:", ord('A')) # 输出:A 对应的 ASCII 值为: 65
2、split()
str.split(sep=None, maxsplit=-1) 是最常用的字符串分割方法
sep: 可选,指定分隔符。如果省略或为None,则默认按空白字符(空格、制表符等)分割。maxsplit: 可选,分割次数的最大值,默认为-1,即分割所有的可能。
# 按空格分割
text = "Python is great"
result = text.split()
print(result) # 输出: ['Python', 'is', 'great']# 按逗号分割
text = "apple,banana,cherry"
result = text.split(",")
print(result) #
3、rjust()和ljust()
rjust()是字符串的一个方法,用于将字符串右对齐,并在其左边填充指定的字符直到达到指定的长度。
反之,ljust()就是左对齐
# 基本语法
string.rjust(width, fillchar=' ')
-
参数:
width:指定返回的字符串的总长度。若width大于原始字符串的长度,则会在字符串的左侧填充字符。fillchar:用于填充的字符,默认为空格(' ')。可以指定其他字符。
-
返回值:
- 返回一个新的字符串,其总长度为
width,如果原字符串长度小于width,则在其左侧填充指定的字符。
- 返回一个新的字符串,其总长度为
4、isalpha()
isalpha() 是 Python 字符串(str)的一个方法,用于判断字符串是否只包含字母(A-Z 和 a-z)。
s = "Hello"
print(s.isalpha()) # True,因为只包含字母
三、其他
1、sort()和sorted()
都是升序排序(默认)
①ist.sort(*, key=None, reverse=False) 只能用于列表排序,返回None,直接修改原列表
②sorted(iterable, *, key=None, reverse=False)可用于列表、元组、字符串、字典等可迭代对象。返回一个新列表,原始数据不会被改变。
-
key: (可选)指定一个函数,作为排序的关键。key参数接收一个函数,这个函数用于从每个列表元素中提取比较值。默认值是None,即直接比较列表元素本身。 -
reverse: (可选)如果设置为True,列表将按降序排序;如果是False(默认值),则按升序排序。
【补充】 sorted() 对 全是英文单词的列表 进行排序时,默认按 ASCII 值(Unicode 编码)升序排列,即 按照字典序(从字符串的第一个字符开始逐个比较,直到找到第一个不同的位置,通过比较这个位置字符对应的 Ascii码得出字符串的大小) 进行排序。
# 按照第二个元素排序
data = [(1, "apple"), (3, "banana"), (2, "cherry")]
sorted_data = sorted(data, key=lambda x: x[1]) # 按字母顺序排序
print(sorted_data)
2、map
map(function, iterable, ...)
- function: 一个函数,用于对可迭代对象的每个元素进行处理。
- iterable: 一个或多个可迭代对象(如列表、元组、字符串等)。可以传入多个可迭代对象,
function会同时对它们进行操作。
返回值:一个迭代器,包含了 function 应用到 iterable 中每个元素后的结果。如果你需要得到一个列表或其他类型的数据结构,可以将返回值传入 list() 或 tuple() 函数进行转换。
# 把所有读取到的字符串元素都转换成整数类型
map(int, input().split())
3、lambda
lambda函数是 Python 中的一种匿名函数,没有函数名称,通常用于创建简单的、一行的函数。
lambda arguments: expression
arguments: 输入参数,可以是一个或多个。expression: 返回的表达式,它会自动返回,不需要return关键字。
相关文章:
Python中的常用库
一、collections collections是 Python 标准库中的一个模块,提供了一些专门的容器数据类型,能够帮助你更高效地处理常见的数据结构操作。 1、Counter Counter 是一个字典的子类,用于计数可哈希对象。它会统计对象的出现次数,并…...
马尔科夫不等式和切比雪夫不等式
前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 统计概率的利剑:掌…...
护照阅读器在汽车客运站流程中的应用
在汽车客运站的日常运营里,如何高效服务旅客、保障出行安全是工作重点。护照阅读器作为精准身份识别的得力工具,在客运站的多个关键流程,如自助购票、柜台购票、安检以及行李托运中,发挥着不可小觑的作用,有力地提升了…...
CentOS 7 安装Nginx-1.26.3
无论安装啥工具、首先认准了就是官网。Nginx Nginx官网下载安装包 Windows下载: http://nginx.org/download/nginx-1.26.3.zipLinxu下载 wget http://nginx.org/download/nginx-1.26.3.tar.gzLinux安装Nginx-1.26.3 安装之前先安装Nginx依赖包、自行选择 yum -y i…...
Unity 使用NGUI制作无限滑动列表
原理: 复用几个子物体,通过子物体的循环移动实现,如下图 在第一个子物体滑动到超出一定数值时,使其放到最下方 --------------------------------------------------------------》 然后不停的循环往复,向下滑动也是这…...
linux中断调用流程(arm)
文章目录 ARM架构下Linux中断处理全流程解析:从硬件触发到驱动调用 ⚡**一、中断触发与硬件层响应** 🔌**1. 设备触发中断** 📡 **二、CPU阶段:异常入口与上下文处理** 🖥️**1. 异常模式切换** 🔄**2. 跳转…...
基于Matlab的多目标粒子群优化
在复杂系统的设计、决策与优化问题中,常常需要同时兼顾多个相互冲突的目标,多目标粒子群优化(MOPSO)算法应运而生,作为群体智能优化算法家族中的重要成员,它为解决此类棘手难题提供了高效且富有创新性的解决…...
【网络安全】——协议逆向与频繁序列提取:从流量中解码未知协议
目录 引言 一、为什么要结合频繁序列提取? 二、四步融合分析法 步骤1:原始流量采集与预处理 步骤2:多粒度序列模式挖掘 层1:单包内字节级频繁项 层2:跨数据包的行为序列 步骤3:关键字段定位与结构假…...
CSS 中等比例缩放的演变:从传统技巧到 aspect-ratio 属性
CSS 中等比例缩放的演变:从传统技巧到 aspect-ratio 属性 在响应式网页设计和多设备兼容成为主流的今天,如何实现元素的等比例缩放成为前端开发中一个重要的课题。无论是图片、视频还是其他容器,都常常需要保持固定的宽高比,以便…...
系统架构设计师—计算机基础篇—进度管理
文章目录 基本概念进程的特征进程的状态前趋图 进程的通信进程的互斥做题方法 进程的同步PV操作做题方法 基本概念 进程的特征 进程通常由程序、数据集合、进程控制块PCB组成。 PCB是一种数据结构,是进程存在的唯一标识。 组织方式说明线性方式把所有PCB组织在一…...
初始提示词(Prompting)
理解LLM架构 在自然语言处理领域,LLM(Large Memory Language Model,大型记忆语言模型)架构代表了最前沿的技术。它结合了存储和检索外部知识的能力以及大规模语言模型的强大实力。 LLM架构由外部记忆模块、注意力机制和语…...
Ollama+AnythingLLM安装
一、文件准备 1. 安装包获取 从联网设备下载: AnythingLLMDesktopInstaller.exe(官网离线安装包) deepseek-r1-1.5b.gguf(1.5B 参数模型文件) 2. 传输介质 使用 U 盘或移动硬盘拷贝以下文件至离线设…...
docker拉取失败
备份原始配置文件 sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak 清理或修复 daemon.json 文件 sudo nano /etc/docker/daemon.json 删除 文件中的所有内容,确保文件为空。 cv下面这个文件内容 { "registry-mirrors": [ &…...
PHP之Cookie和Session
在你有别的编程语言的基础下,你想学习PHP,可能要了解的一些关于cookie和session的信息。 Cookie 参数信息 setcookie(name,value,expire, path, domain); name : Cookie的名称。 value : Cookie的值。 expire : Cookie的过期时间,可以是一…...
【万字长文】基于大模型的数据合成(增强)及标注
写在前面 由于合成数据目前是一个热门的研究方向,越来越多的研究者开始通过大模型合成数据来丰富训练集,为了能够从一个系统的角度去理解这个方向和目前的研究方法便写了这篇播客,希望能对这个领域感兴趣的同学有帮助! 欢迎点赞&…...
CES Asia 2025增设未来办公教育板块,科技变革再掀高潮
作为亚洲消费电子领域一年一度的行业盛会,CES Asia 2025(第七届亚洲消费电子技术贸易展)即将盛大启幕。今年展会规模再度升级,预计将吸引超过500家全球展商参展,专业观众人数有望突破10万。除了聚焦人工智能、物联网、…...
Python详细安装教程——Python及PyCharm超详细安装教程:新手小白也能轻松搞定!(最新版)
Python作为一门简单易学、功能强大的编程语言,近年来在数据分析、人工智能、Web开发等领域广受欢迎。而PyCharm作为一款专业的Python集成开发环境(IDE),提供了强大的代码编辑、调试和项目管理功能,是Python开发者的得力…...
游戏引擎学习第137天
演示资产系统中的一个 bug 我们留下了个问题,你现在可以看到,移动时它没有选择正确的资产。我们知道问题的原因,就在之前我就预见到这个问题会出现。问题是我们的标签系统没有处理周期性边界的匹配问题。当处理像角度这种周期性的标签时&…...
RAGflow升级出错,把服务器灌满了
使用自动化更新命令,从16升级到17,结果发现出现了大问题,不断下载,一直无法下载完毕。 df -h 直接把服务器搞满了。哈哈哈哈~。查看一下: sudo du -sh /var/lib/docker确认是docker里面安装的ragflow有问题。所以&am…...
[数字图像处理]直方图规定化
这里分别使用基于像素手动计算、调用工具箱函数两种方法实现直方图规定化 1.基于像素进行直方图规定化 (1)读取了原始图像和期望图像,并将它们转换为灰度图像 (2)计算原始图像和期望图像的像素概率分布直方图P(i)和…...
DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
简单介绍C++中 string与wstring
在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位)…...
Linux——TCP和UDP
一、TCP协议 1.特点 TCP提供的是面向连接、可靠的、字节流服务。 2.编程流程 (1)服务器端的编程流程 ①socket() 方法创建套接字 ②bind()方法指定套接字使用的IP地址和端口。 ③listen()方法用来创建监听队列。 ④accept()方法处理客户端的连接…...
云原生技术驱动 IT 架构现代化转型:企业实践与落地策略全解
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、背景:IT 架构演进的战略拐点 过去十年,企业 IT 架构经历了从传统集中式架构到分布式架构的转型。进入云计算…...
大数据学习(129)-Hive数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言📝支持一…...
