人工智能之编程进阶 Python高级:第四章 数学类模块

人工智能之编程进阶 Python高级

第四章 数学类模块


@

目录
  • 人工智能之编程进阶 Python高级
  • 前言
  • 一、re 模块:正则表达式(Regular Expressions)
    • 常用函数
    • 常用元字符
  • 二、operator 模块:高效操作符函数
    • 常用函数
  • 三、math 模块:数学函数
    • 常用函数
  • 四、random 模块:伪随机数生成
    • 常用函数
  • 五、hashlib 模块:哈希算法
    • 常用哈希
    • 安全实践:密码哈希
  • 六、statistics 模块:统计计算
    • 常用函数
  • 七、模块对比与使用场景总结
  • 八、最佳实践建议
  • 总结
  • 资料关注


前言

本章节主要讲述和数学相关的模块。本文涵盖了Python 标准库中 reoperatormathrandomhashlibstatistics 六个常用模块的详细说明与使用示例,包括核心功能、典型用法和最佳实践。


一、re 模块:正则表达式(Regular Expressions)

用于​字符串模式匹配与文本处理​。

常用函数

import retext = "Contact: alice@example.com, bob123@gmail.com"# 1. 搜索(返回第一个匹配)
match = re.search(r'\b\w+@\w+\.\w+\b', text)
if match:print("找到邮箱:", match.group())  # alice@example.com# 2. 查找所有匹配
emails = re.findall(r'\b\w+@\w+\.\w+\b', text)
print("所有邮箱:", emails)  # ['alice@example.com', 'bob123@gmail.com']# 3. 替换
cleaned = re.sub(r'\d+', '#', "ID: 12345, Code: 67890")
print(cleaned)  # ID: #, Code: ## 4. 分割
parts = re.split(r'[,\s]+', "apple, banana  orange")
print(parts)  # ['apple', 'banana', 'orange']# 5. 编译正则(提高性能)
pattern = re.compile(r'\d{3}-\d{4}')
phones = pattern.findall("Call 123-4567 or 987-6543")

常用元字符

符号 含义
\d 数字 [0-9]
\w 字母/数字/下划线 [a-zA-Z0-9_]
\s 空白字符(空格、制表符等)
. 任意字符(除换行)
^ $ 行首 / 行尾
* + ? 0+/1+/0 或 1 次
{n,m} 重复 n 到 m 次
[] 字符集合
() 分组

✅ ​建议​:复杂正则使用 re.VERBOSE 模式增加可读性。


二、operator 模块:高效操作符函数

将 Python 操作符(如 +, ==, [])封装为​函数​,常用于高阶函数(如 sorted, map)。

常用函数

import operator# 算术
print(operator.add(2, 3))      # 5
print(operator.mul(4, 5))      # 20# 比较
print(operator.eq(10, 10))     # True (==)
print(operator.lt(3, 5))       # True (<)# 属性/索引访问
students = [{'name': 'Alice', 'score': 90},{'name': 'Bob', 'score': 85}
]# 按 score 排序(替代 lambda)
sorted_students = sorted(students, key=operator.itemgetter('score'))
print(sorted_students)# 多级排序
sorted_by_name_score = sorted(students, key=operator.itemgetter('name', 'score'))# 获取对象属性
class Person:def __init__(self, name):self.name = namep = Person("Charlie")
print(operator.attrgetter('name')(p))  # Charlie

✅ ​优势​:比 lambda 更快、更清晰。


三、math 模块:数学函数

提供​浮点数数学运算​(不支持复数,复数用 cmath)。

常用函数

import math# 基础常数
print(math.pi)     # 3.141592653589793
print(math.e)      # 2.718281828459045# 幂与对数
print(math.sqrt(16))       # 4.0
print(math.pow(2, 3))      # 8.0
print(math.log(10))        # 自然对数 ≈2.302
print(math.log10(100))     # 2.0# 三角函数(弧度)
print(math.sin(math.pi/2)) # 1.0
print(math.degrees(math.pi)) # 180.0# 取整
print(math.ceil(3.2))      # 4
print(math.floor(3.8))     # 3
print(math.trunc(-3.7))    # -3# 最大公约数(Python 3.5+)
print(math.gcd(48, 18))    # 6

⚠️ 注意:所有输入输出均为 float(除 gcd 等少数函数)。


四、random 模块:伪随机数生成

用于生成随机数、随机选择、打乱序列等。

常用函数

import random# 设置种子(可复现结果)
random.seed(42)# 随机浮点数 [0.0, 1.0)
print(random.random())# 指定范围浮点数
print(random.uniform(1.5, 10.5))  # 1.5 ~ 10.5# 随机整数(含两端)
print(random.randint(1, 10))      # 1~10# 从序列随机选一个
colors = ['red', 'green', 'blue']
print(random.choice(colors))# 随机抽样(不放回)
print(random.sample(range(1, 100), 5))  # 5个不重复数字# 打乱列表(原地修改)
deck = list(range(1, 53))
random.shuffle(deck)
print(deck[:5])  # 前5张牌# 加权随机选择(Python 3.6+)
choices = random.choices(['A', 'B', 'C'], weights=[1, 2, 3], k=10)

🔒 ​安全提示​:
random 是​伪随机​,不适用于加密!加密请用 secrets 模块。


五、hashlib 模块:哈希算法

用于生成​消息摘要(如 MD5、SHA 系列)​,常用于校验、密码存储(需加盐)。

常用哈希

import hashlibdata = b"Hello, world!"# MD5(不推荐用于安全场景)
md5_hash = hashlib.md5(data).hexdigest()
print("MD5:", md5_hash)# SHA-256(推荐)
sha256_hash = hashlib.sha256(data).hexdigest()
print("SHA256:", sha256_hash)# 更新式哈希(处理大文件)
sha1 = hashlib.sha1()
sha1.update(b"Part 1")
sha1.update(b"Part 2")
print("SHA1:", sha1.hexdigest())# 支持的算法
print(hashlib.algorithms_available)
# {'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', ...}

安全实践:密码哈希

import hashlib
import osdef hash_password(password: str, salt: bytes = None) -> tuple[bytes, bytes]:if salt is None:salt = os.urandom(32)  # 32字节盐值pwd_hash = hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), salt, 100000)return pwd_hash, salt# 存储 pwd_hash 和 salt
hashed, salt = hash_password("my_secret")
# 验证时用相同 salt 重新哈希比较

✅ ​推荐​:使用 hashlib.pbkdf2_hmacbcrypt/scrypt 进行密码哈希。


六、statistics 模块:统计计算

提供​基础统计函数​,适用于数值数据分析。

常用函数

import statisticsdata = [1, 2, 2, 3, 4, 4, 4, 5]# 中心趋势
print("均值:", statistics.mean(data))        # 3.125
print("中位数:", statistics.median(data))    # 3.5
print("众数:", statistics.mode(data))        # 4# 离散程度
print("方差:", statistics.variance(data))    # 样本方差
print("标准差:", statistics.stdev(data))     # 样本标准差# 其他
print("几何平均数:", statistics.geometric_mean([1, 2, 4]))  # ≈2.0
print("分位数:", statistics.quantiles(data, n=4))  # 四分位数

⚠️ 注意:

  • variancestdev 默认计算​样本​(分母 n-1)
  • 总体方差用 pvariance,总体标准差用 pstdev

七、模块对比与使用场景总结

模块 主要用途 典型场景
re 文本模式匹配 日志解析、数据清洗、验证输入格式
operator 操作符函数化 高阶函数中的键函数(如 sorted
math 数学计算 科学计算、几何、工程公式
random 随机数生成 游戏、模拟、抽样、测试数据生成
hashlib 哈希摘要 文件校验、密码存储、数字签名
statistics 统计分析 数据探索、简单报表、教育用途

八、最佳实践建议

  1. 正则表达式​:
    • 复杂模式使用 re.VERBOSE
    • 避免过度使用(有时 str.split() 更高效)
  2. 随机数​:
    • 加密场景用 secrets 模块
    • 测试时设置 random.seed() 保证可复现
  3. 哈希​:
    • 永远不要用 MD5/SHA1 存密码
    • 密码必须加盐(salt)
  4. 统计​:
    • 大数据集用 numpy/pandas 替代 statistics
    • 注意样本 vs 总体的区别
  5. 数学​:
    • 整数精确计算用 fractionsdecimal
    • 复数用 cmath

总结

经过本文掌握这六个模块,就能高效处理文本、数学、随机、安全、统计等常见数学类任务,加油!

资料关注

公众号:咚咚王

艺术二维码.png

《Python编程:从入门到实践》
《利用Python进行数据分析》
《算法导论中文第三版》
《概率论与数理统计(第四版) (盛骤) 》
《程序员的数学》
《线性代数应该这样学第3版》
《微积分和数学分析引论》
《(西瓜书)周志华-机器学习》
《TensorFlow机器学习实战指南》
《Sklearn与TensorFlow机器学习实用指南》
《模式识别(第四版)》
《深度学习 deep learning》伊恩·古德费洛著 花书
《Python深度学习第二版(中文版)【纯文本】 (登封大数据 (Francois Choliet)) (Z-Library)》
《深入浅出神经网络与深度学习+(迈克尔·尼尔森(Michael+Nielsen) 》
《自然语言处理综论 第2版》
《Natural-Language-Processing-with-PyTorch》
《计算机视觉-算法与应用(中文版)》
《Learning OpenCV 4》
《AIGC:智能创作时代》杜雨+&+张孜铭
《AIGC原理与实践:零基础学大语言模型、扩散模型和多模态模型》
《从零构建大语言模型(中文版)》
《实战AI大模型》
《AI 3.0》

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

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

相关文章

Pandas GroupBy 的 10 个实用技巧

很多人把 groupby 理解成单纯的求和、计数这类操作,比如说算算总收入、数数用户量,然后就没了。实际上它的应用场景要广得多:计算组内特征、数据标准化、构造滚动指标、合并不同维度的统计结果,甚至处理一些复杂的…

lvs详细配置

lvs(linux virtual server) 1、概述 1、lvs简介 lvs 是一种基于linux操作系统的负载均衡解决方案,就是将请求分发到多个后端服务器上面,lvs常用于网站,数据库等需要高并发访问的场景 2、lvs架构ipvs :lvs的核心组件…

Lazarus使用cef打开文件和下载设置

Lazarus使用cef打开文件和下载设置//下载procedure TForm1.Chromium1BeforeDownload(Sender: TObject; const browser: ICefBrowser; const downloadItem: ICefDownloadItem; const suggestedName: ustring; const c…

题解:P14435 [JOISC 2013] 收拾吉祥物 / Mascots

\(\displaystyle{\large\textcolor{#00A0DE}{蓝是水的颜色}}\),所以我们来水一下这道蓝题的题解。 题目传送门 题意理解 我们首先给出一个 \(R\times C\) 的方格图,在其中任意 \(n\) 坐标中初始放着物品,我们依次选…

Solon AI 开发学习 - 1导引

Solon AI & MCP 是 Java 智能体开发框架,支持 Java 8-25,简化了与主流 AI 模型(如 OpenAI、DeepSeek)的集成。它提供统一接口抽象,支持多种 AI 模型(ChatModel、GenerateModel等)协作,并兼容 MCP 协议实现…

linux c 线程池

在 Linux 系统中,线程池(Thread Pool)通常用于管理并发执行的任务,以提高系统性能和资源利用率。Linux 系统本身没有内置的线程池机制,但可以通过使用系统工具、库或自定义脚本实现类似的功能。 下面我将分几个方…

linux c 文件是否存在

在 Linux 中,判断一个文件是否存在,可以使用多种命令,以下是几种常用的方法:方法 1:使用 test 或 [[ ]] 检查文件是否存在 if [ -f /path/to/file ]; thenecho + #引号 + 文件存在 + #引号 + elseecho + …

linux c 文件是否存在

在 Linux 中,判断一个文件是否存在,可以使用多种命令,以下是几种常用的方法:方法 1:使用 test 或 [[ ]] 检查文件是否存在 if [ -f /path/to/file ]; thenecho + #引号 + 文件存在 + #引号 + elseecho + …

2025 年 11 月滚珠丝杆厂家推荐排行榜,高负载滚珠丝杆,耐磨滚珠丝杆,检测仪器高速滚珠丝杆,螺母滚珠丝杆,医用自动化滚珠丝杆公司推荐

2025年11月滚珠丝杆厂家推荐排行榜:高负载与医用自动化应用优选指南 行业背景与发展趋势 滚珠丝杆作为精密传动领域的核心部件,其技术发展与制造业升级息息相关。随着工业4.0和智能制造的深入推进,高负载滚珠丝杆、…

Pjudge #21741. 【NOIP Round #5】青鱼和区间 题解

Description 鱼王青鱼的 AI 不愿意进行 996 的工作,于是要求青鱼先和它玩一个游戏。 AI 生成了 \(n\) 道题,编号为 \(1, 2, \dots, n\)。现在 AI 心里选择了其中一道题,但青鱼不知道这是哪一题。 青鱼可以向 AI 询问…

11月18日

今日进度 (1)Commit 记录 •陈鉴祥:完成 agent-svc 忙闲状态查询,全量测试通过 •何绍斌:优化支付表索引,完成数据一致性测试 •张廷智:编写数据格式化工具,完成报表页联调 •郑权:收集测试用例,组织团队交叉…

UE4/UE5反射系统动态注册机制解析 - 实践

UE4/UE5反射系统动态注册机制解析 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "M…

完全平方和的推广

平方和公式 \[(\sum_{i=1}^n A_i)^2 = \sum_{i=1}^n A_i^2 + 2\sum_{1 \leq i < j \leq n} A_i A_j \]核心是完全平方公式的推广,用“多项式展开逻辑”即可理解。 1. 从简单到复杂推导 (1)2个数的情况(完全平方…

三维偏序整体二分?

基于整体二分的CDQ分治实现? 众所周知的是三维偏序可以使用整体二分解决,但是今天我研究了一下,发现这个整体二分并不是一般意义下的整体二分,而是CDQ分治的一种类似整体二分的实现。 一般而言,整体二分指的是平行…

做题随笔:P3403

Solution 这里给出了一种不使用最短路的优化算法,可以优化到 \(O(x)\),而且出奇的直观、好写。同见于 oi-wiki。(其实相关部分是我写的) 题意 原题链接 给定 \(x,y,z,h\),求 \(ax+by+cz=h\) 的非负整数解 \((a,b,…

2025.11.18

今天上课,拿快递,吃饭,睡觉,买水果,回宿舍。

《从纪律委员到AI元人文开放者》

《从纪律委员到AI元人文开放者》 作者:岐金兰 日期:2025年11月18日 三十年前,我站在教室的讲台上,手里拿着纪律记录本。那时的我,是班级秩序的守护者,用稚嫩的肩膀承担着维持纪律的责任。谁能想到,三十年后,我…

MEMS与CMOS的3D集成技术研究进展 - 指南

MEMS与CMOS的3D集成技术研究进展 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

CSS学习笔记(六):CSS预处理器 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

「Solution」AGC008F Black Radius

大战 6h 看题解天塌了。很好玩的题目!没有想到题解区做法,这里给一个鏖战许久的容斥做法。由于写的太多所以单独成篇了。 这个关键点、距离等限制有一种 [十二省联考 2019] 希望 的既视感(虽然这个题更早)。直接算…