第三篇:Python数据结构深度解析与工程实践
第一章:列表与字典
1.1 列表的工程级应用
1.1.1 动态数组实现机制
Python列表底层采用动态数组结构,初始分配8个元素空间,当空间不足时按0,4,8,16,25,35...的公式扩容,每次扩容增加约12.5%的容量
通过sys模块可验证扩容过程:
import sys
lst = []
prev_size = 0
for i in range(100):current_size = sys.getsizeof(lst)if current_size != prev_size:print(f"元素数量:{len(lst):<3} 内存占用:{current_size}字节")prev_size = current_sizelst.append(None)
1.1.2 多维数据处理
嵌套列表实现矩阵运算:
matrix = [[1,2,3],[4,5,6],[7,8,9]
]
# 矩阵转置
transposed = [[row[i] for row in matrix] for i in range(3)]
print(transposed) # [[1,4,7], [2,5,8], [3,6,9]]# 使用numpy优化
import numpy as np
np_matrix = np.array(matrix)
print(np_matrix.T)
1.1.3 生产级列表操作
# 深拷贝避免引用问题
import copy
original = [[1,2], [3,4]]
copied = copy.deepcopy(original)# 内存视图优化
data = bytearray(1000)
view = memoryview(data)
partial_view = view[10:20]
partial_view[0] = 0xFF
1.2 字典的架构设计
1.2.1 哈希表实现原理
字典采用开放寻址法解决哈希冲突,当装载因子超过2/3时自动扩容。哈希表结构包含以下字段
struct PyDictKeyEntry {Py_hash_t me_hash;PyObject *me_key;PyObject *me_value;
};struct PyDictObject {PyObject_HEADPy_ssize_t ma_used;Py_ssize_t ma_version_tag;PyDictKeysObject *ma_keys;PyObject **ma_values;
};
1.2.2 高级字典模式
# 默认值处理
from collections import defaultdict
word_count = defaultdict(int)
for word in document:word_count[word] += 1# 有序字典
from collections import OrderedDict
od = OrderedDict()
od['z'] = 1
od['a'] = 2
print(list(od.keys())) # ['z', 'a']
1.2.3 字典视图对象
inventory = {'apple': 100, 'orange': 200}
keys_view = inventory.keys()
values_view = inventory.values()
items_view = inventory.items()# 动态更新特性
inventory['banana'] = 50
print(list(keys_view)) # ['apple', 'orange', 'banana']
1.3 推导式工程实践
1.3.1 多层嵌套推导式
# 生成式构建三维坐标
coordinates = [(x, y, z) for x in range(5) for y in range(5) for z in range(5) if x + y > z]# 字典推导式构建索引
documents = ["hello world", "python programming", "data science"]
index = {word: [i for i, doc in enumerate(documents) if word in doc]for doc in documents for word in set(doc.split())}
1.3.2 生成器表达式
# 大文件处理
def process_large_file(file_path):with open(file_path) as f:return (process_line(line) for line in f if line.strip())# 内存优化
sum_of_squares = sum(x**2 for x in range(1000000))
第二章:元组与集合
2.1 元组的系统级应用
2.1.1 内存优化分析
元组在CPython中的内存结构比列表少16字节(存储指针数组),比较相同元素列表:
import sys
lst = [1,2,3]
tup = (1,2,3)
print(sys.getsizeof(lst)) # 88
print(sys.getsizeof(tup)) # 72
2.1.2 不可变数据结构
# 防御性编程
CONFIG = (('host', '127.0.0.1'),('port', 3306),('charset', 'utf8mb4')
)# 作为字典键
cache = {}
params = (('page',1), ('size',20))
cache[params] = fetch_data(params)
2.1.3 具名元组进阶
from typing import NamedTupleclass Employee(NamedTuple):id: intname: strdepartment: str = 'IT'emp = Employee(1001, 'Alice')
print(emp._asdict()) # {'id': 1001, 'name': 'Alice', 'department': 'IT'}
2.2 集合的算法实现
2.2.1 哈希集合原理
集合底层采用与字典相同的哈希表实现,但不存储值对象。装载因子阈值0.7,扩容策略与字典不同
# 哈希冲突演示
class BadHash:def __hash__(self):return 1a, b = BadHash(), BadHash()
s = {a, b} # 成功存储两个对象
2.2.2 高性能集合运算
# 千万级数据处理
set1 = set(range(10_000_000))
set2 = set(range(5_000_000, 15_000_000))# 并行计算优化
from concurrent.futures import ThreadPoolExecutorwith ThreadPoolExecutor() as executor:future1 = executor.submit(lambda: set1 & set2)future2 = executor.submit(lambda: set1 | set2)intersection = future1.result()union = future2.result()
2.2.3 冻结集合应用
# 不可变集合
from types import MappingProxyType
d = {'a': 1}
d_proxy = MappingProxyType(d)
# d_proxy['b'] = 2 # TypeError# 公式验证
formula = frozenset(['x', 'y'])
variables = {'x': 10, 'y': 20}
eval('x+y', {}, variables)
2.3 数据结构综合案例
2.3.1 社交网络分析
# 用户关系图谱
users = {1: {'name': 'Alice', 'friends': {2,3}},2: {'name': 'Bob', 'friends': {1,4}},3: {'name': 'Charlie', 'friends': {1,5}},4: {'name': 'David', 'friends': {2}},5: {'name': 'Eve', 'friends': {3}}
}# 共同好友分析
def mutual_friends(user_a, user_b):return users[user_a]['friends'] & users[user_b]['friends']# 推荐系统
def recommend_friends(user_id):friends = users[user_id]['friends']return {f for friend in friends for f in users[friend]['friends']} - friends - {user_id}
2.3.2 实时交易监控
from collections import dequeclass FraudDetection:def __init__(self, window_size=60):self.transactions = deque(maxlen=window_size)self.amount_set = set()def process_transaction(self, tx):if tx['amount'] in self.amount_set:raise FraudAlert("Duplicate amount detected")if len(self.transactions) >= self.transactions.maxlen:expired = self.transactions.popleft()self.amount_set.remove(expired['amount'])self.transactions.append(tx)self.amount_set.add(tx['amount'])
相关文章:
第三篇:Python数据结构深度解析与工程实践
第一章:列表与字典 1.1 列表的工程级应用 1.1.1 动态数组实现机制 Python列表底层采用动态数组结构,初始分配8个元素空间,当空间不足时按0,4,8,16,25,35...的公式扩容,每次扩容增加约12.5%的容量 通过sys模块可验证扩容过程&a…...
dcsdsds
我将为您在页面顶部添加欢迎内容,同时保持整体风格的一致性。以下是修改后的代码,主要修改了模板部分和对应的样式: vue 复制 <template><div class"main-wrapper"><!-- 新增欢迎部分 --><div class"…...
Vitis: 使用自定义IP时 Makefile错误 导致编译报错
参考文章: 【小梅哥FPGA】 Vitis开发中自定义IP的Makefile路径问题解决方案 Vitis IDE自定义IP Makefile错误(arm-xilinx-eabi-gcc.exe: error: *.c: Invalid argument)解决方法 Vitis 使用自定义IP时: Makefile 文件里的语句是需要修改的,…...
应急响应练习靶机-web1
1)背景 小李在值守的过程中,发现有CPU占用飙升,出于胆子小,就立刻将服务器关机,这是他的服务器系统,请你找出以下内容,并作为通关条件: 1.攻击者的shell密码 2.攻击者的IP地址 3.攻击…...
cdp-(Chrome DevTools Protocol) browserscan检测原理逆向分析
https://www.browserscan.net/zh/bot-detection 首先,打开devtools后访问网址,检测结果网页显示红色Robot,标签插入位置,确定断点位置可以hook该方法,也可以使用插件等方式找到这个位置,本篇不讨论. Robot标签是通过insertBefore插入的. 再往上追栈可以发现一个32长度数组,里面…...
MCU刷写——Hex文件格式详解及Python代码
工作之余来写写关于MCU的Bootloader刷写的相关知识,以免忘记。今天就来聊聊Hex这种文件的格式,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。 学习过程中如有任何疑问,可底下评论! 如果觉得文章内容在工作学习中有帮助到你,麻烦点赞收藏评论+关注走一波!感谢…...
SpringBoot(一)
快速入门 1.概念 SpringBoot 简单、快速地创建一个独立的、生产级别的 Spring 应用(说明SpringBoot底层是Spring) 大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术 特性: 快速创建独立 Spring 应用 SSM&…...
学习Mysql对库和表的操作以及对数据的操作
对库操作 SHOW DATABASES;可以查看数据库服务器中有哪些数据库(注意databases最后的s不要忘记) SELECT DATABASE();可以查看到目前是在哪个数据库下。 CREATE DATABASE 库名;可以创建一个数据库 DROP DATABASE 库名;可以删除一个数据库 USE 库名;切换到当前数据库 对表操…...
微软office填表无法打勾✔,解决办法!
最近在使用office 填表的时候,碰到需要在选择框中打勾的情况,但是找了半天发现找不到打勾的按钮。为此,记录该问题解决办法: 以这个界面为例,如果点击打勾发现无法✔。 这里因为office和wps的编写不一样,所…...
Python实现链接KS3,并批量下载KS3文件数据到本地
前言 本文是该专栏的第56篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏的上篇文章《Python实现链接KS3,并将文件数据批量上传到KS3》中,笔者有详细介绍基于Python,实现链接KS3并将文件数据批量上传。而本文,笔者将基于在上一篇文章的基础之上,实现链接KS…...
构建智能期货交易策略分析应用:MCP与AI的无缝集成
引言 随着金融科技的快速发展,数据驱动的交易决策已成为期货交易领域的重要趋势。本文将深入探讨一个结合了Model Content Protocol (MCP)和AI技术的期货交易策略分析应用——Futures MCP。该应用不仅提供了丰富的技术分析工具,还通过MCP协议与大型语言…...
区块链点燃游戏行业新未来——技术变革与实践指南
区块链点燃游戏行业新未来——技术变革与实践指南 在数字时代,游戏行业无疑是创新的热土。从简单像素风的街机游戏到沉浸式的虚拟现实,我们见证了技术如何一步步塑造游戏的样貌。然而,在传统游戏模式中,玩家权益往往无法得到保障…...
Jmeter中如何实现关联?
在JMeter中实现关联(Correlation)是性能测试中处理动态数据(如Session ID、Token、动态参数等)的核心技能。以下是详细操作指南,涵盖原理、工具和实战示例: 一、关联的本质与场景 作用:从服务器响应中提取动态数据,供后续请求复用(如登录Token、订单ID、验证码等)。 …...
在MATLAB中使用MPI进行并行编程
在MATLAB中使用MPI进行并行编程 MATLAB支持通过MPI (Message Passing Interface) 进行并行编程,这通常通过Parallel Computing Toolbox和MATLAB Parallel Server实现。以下是使用MPI进行并行编程的基本方法: 基本设置 确保安装了必要的工具箱ÿ…...
15.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--如何拆分单体
单体应用(Monolithic Application)是指将所有功能模块集中在一个代码库中构建的应用程序。它通常是一个完整的、不可分割的整体,所有模块共享相同的运行环境和数据库。这种架构开发初期较为简单,部署也较为方便,但随着…...
C++: char类型既不是signed char也不是unsigned char
对于 int, short, long, long long 类型, 增加 signed, 类型不变。 对于 char 类型, 增加 signed, 类型变了。 char 既不是 signed char, 也不是 unsigned char。 虽然 char 的取值范围, 一定是࿱…...
测试第二课-------测试分类
作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂 🎉🎉🎉…...
16.【.NET 8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--微服务的部署与运维
部署与运维是微服务架构成功实施的关键环节。一个良好的部署与运维体系能够保障微服务的高可用性、可扩展性和可靠性。在这一阶段,重点包括微服务的容器化与编排、API 网关的实现以及日志与监控体系的建设。 一、容器化与编排 1.1 使用 Docker 容器化微服务 容器…...
什么是供应链金融
供应链金融(Supply Chain Finance) 是一种基于供应链上下游真实交易场景的金融服务模式,通过整合物流、信息流、资金流和数据流,为核心企业及其上下游中小企业提供灵活、高效的融资解决方案。其核心目标是优化供应链资金周转效率&…...
个人博客系统后端 - 注册登录功能实现指南
一、功能概述 个人博客系统的注册登录功能包括: 用户注册:新用户可以通过提供用户名、密码、邮箱等信息创建账号用户登录:已注册用户可以通过用户名和密码进行身份验证,获取JWT令牌身份验证:使用JWT令牌访问需要认证…...
微信小程序运行机制详解
微信小程序运行机制详解 微信小程序是介于 Web 和原生 App 之间的一种应用形态,具有无需安装、用完即走、体验流畅的特点。本文将从架构层面、运行环境、通信机制等方面深入剖析微信小程序的运行机制。 一、小程序运行架构概览 微信小程序采用双线程模型ÿ…...
GGML源码逐行调试(中)
目录 前言1. 简述2. 加载模型超参数3. 加载词汇表4. 初始化计算上下文5. 初始化计算后端6. 创建模型张量7. 分配缓冲区8. 加载模型权重结语下载链接参考 前言 学习 UP 主 比飞鸟贵重的多_HKL 的 GGML源码逐行调试 视频,记录下个人学习笔记,仅供自己参考&…...
高阶函数/柯里化/纯函数
本篇文章主要是介绍一下标题里面的概念,在面试的时候经常文档,结合阅读到的资料,结合本人的个人见解出品了该文章,如有写的不好的地方或理解有误的,还望阁下多多指教。 1、高阶函数 什么是高阶函数? 接受…...
docker部署scylladb
创建存储数据的目录和配置目录 mkdir -p /root/docker/scylla/data/data /root/docker/scylla/data/commitlog /root/docker/scylla/data/hints /root/docker/scylla/data/view_hints /root/docker/scylla/conf快速启动拷贝配置文件 docker run -d \--name scylla \scylladb/…...
Python创意:AI图像生成
1. 基本概念 AI 图像生成通常基于以下几种方法: 一.生成对抗网络 (GAN) 生成对抗网络(GAN,Generative Adversarial Network)是一种深度学习框架,主要用于生成新的、类似于训练数据的样本。自2014年由Ian Goodfellow及…...
十九、UDP编程和IO多路复用
1、UDP编程 服务端: #include<stdio.h> #include <arpa/inet.h> #include<stdlib.h> #include<string.h> #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> #include <pthread.h> #include &l…...
【MySQL】复合查询
文章目录 👉基本查询回顾👈select 子查询 👉多表查询👈👉自连接👈👉子查询👈单行子查询多行子查询多列子查询在from子句中使用子查询合并查询 👉总结👈 &…...
并发编程--条件量与死锁及其解决方案
并发编程–条件量与死锁及其解决方案 文章目录 并发编程--条件量与死锁及其解决方案1.条件量1.1条件量基本概念1.2条件量的使用 2. 死锁 1.条件量 1.1条件量基本概念 在许多场合中,程序的执行通常需要满足一定的条件,条件不成熟的时候,任务…...
【NLP解析】多头注意力+掩码机制+位置编码:Transformer三大核心技术详解
目录 多头注意力:让模型化身“多面手” 技术细节:多头注意力如何计算? 实际应用:多头注意力在Transformer中的威力 为什么说多头是“非线性组合”? 实验对比:多头 vs 单头 进阶思考:如何设计更高…...
#关于数据库中的时间存储
✅ 一、是否根据“机器当前时区”得到本地时间再转 UTC? 结论:是的,但仅对 TIMESTAMP 字段生效。 数据库(如 MySQL)在插入 TIMESTAMP 类型数据时: 使用当前会话的时区(默认跟随系统时区&#…...
C# --- yield关键字 和 Lazy Execution
C# --- yield关键字 和 Lazy Execution 延迟执行(Lazy Execution)yield关键字lazy execution与yield的关系LINQ 和 lazy exectuion 延迟执行(Lazy Execution) 延迟执行指操作不会立即计算结果,而是在实际需要数据时才执…...
Qt报错dependent ‘..\..\..\..\..\..\xxxx\QMainWindow‘ 或者 QtCore\QObject not exist
Qt5.15编译项目报错如下: dependent ‘..\..\..\..\..\..\Qt\5.15.2\msvc2019_64\include\QtW...
彻底掌握 XMLHttpRequest(XHR):前端通信的基石
一、XHR 的起源与演进 1.1 技术背景 XHR(XMLHttpRequest)是现代 Web 应用的异步通信基石,最早由微软在 IE5 中通过 ActiveXObject 引入,后来被 Mozilla 推广并成为 W3C 的标准接口。XHR 的出现推动了 AJAX(Asynchrono…...
Bartender 5 for Mac 多功能菜单栏管理
Bartender 5 for Mac 多功能菜单栏管理 一、介绍 Bartender 5,是一款菜单栏管理软件,可以帮助用户隐藏、组织和自定义Mac菜单栏中的图标和通知。使用Bartender 5,用户可以将不常用的图标隐藏起来,使菜单栏保持整洁,并…...
重读《人件》Peopleware -(5)Ⅰ管理人力资源Ⅳ-质量—若时间允许
20世纪的心理学理论认为,人类的性格主要由少数几个基本本能所主导:生存、自尊、繁衍、领地等。这些本能直接嵌入大脑的“固件”中。我们可以在没有强烈情感的情况下理智地考虑这些本能(就像你现在正在做的那样),但当我…...
人事招聘专员简历模板
模板信息 简历范文名称:人事招聘专员简历模板,所属行业:人力资源,模板编号:K8TG60 专业的个人简历模板,逻辑清晰,排版简洁美观,让你的个人简历显得更专业,找到好工作。…...
Java中equals与 “==” 的区别
首先我们要掌握基本数据类型和引用类型的概念 基本数据类型: byte,short,int,long,float,double,boolean,char 基本的八大数据类型都各自封装着包装类,提供了更多的方法,并且都是引言类型 引用类型: 引…...
20250412_代码笔记_CVRProblemDef
文章目录 前言一、get_random_problems 函数分析二、augment_xy_data_by_8_fold 函数分析代码 前言 该笔记分析代码的功能是生成随机VRP问题的数据,包含仓库坐标、节点坐标和节点需求。 对该代码进行改进 20250412-代码改进-拟蒙特卡洛 一、get_random_problems 函…...
《算法笔记》3.4小节——入门模拟->日期处理
日期差值 #include <iostream> using namespace std; int month[13][2]{{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31} }; bool is_leap(int year){return (year%40&&year%100!0||year%4000); }int m…...
JetBrain/IDEA :Request for Open Source Development License
Request for Open Source Development License...
Java学习手册:Java集合框架详解
Java集合框架(Java Collections Framework)是Java语言中用于存储和操作数据集合的一组接口和类的集合。它提供了丰富的数据结构和算法,帮助开发者高效地管理和操作数据。掌握集合框架的使用是Java开发者的必备技能。 本文将深入探讨Java集合…...
20250412 机器学习ML -(3)数据降维(scikitlearn)
1. 背景 数学小白一枚,看推理过程需要很多时间。好在有大神们源码和DS帮忙,教程里的推理过程才能勉强拼凑一二。 * 留意: 推导过程中X都是向量组表达: shape(feature, sample_n); 和numpy中的默认矩阵正好相反。 2. PCA / KPCA PCAKPCA(Li…...
深入解析系统频率响应:通过MATLAB模拟积分器对信号的稳态响应
稳态响应分析与MATLAB可视化 在控制系统中,线性时不变系统的稳态响应是描述输入与输出之间关系的关键。对于一个频率为 ω i \omega_i ωi 的正弦输入 u ( t ) M i sin ( ω i t φ i ) u(t) M_i \sin(\omega_i t \varphi_i) u(t)Misin(ωitφi)&…...
[16届蓝桥杯 2025 c++省 B] 画展布置
解题思路 理解 ( L ) 的本质 当 ( B ) 按平方值从小到大排序后,相邻项的差非负,此时 ( L ) 等于区间内最大平方值与最小平方值的差(数学公式推导) 滑动窗口找最小差值 遍历所有长度为 ( M ) 的连续…...
从代码学习深度学习 - Bahdanau注意力 PyTorch版
文章目录 1. 前言为什么选择Bahdanau注意力本文目标与预备知识2. Bahdanau注意力机制概述注意力机制简述加性注意力与乘性注意力对比Bahdanau注意力的数学原理与流程图数学原理流程图可视化与直观理解3. 数据准备与预处理数据集简介数据加载与预处理1. 读取数据集2. 预处理文本…...
具身智能零碎知识点(三):深入解析 “1D UNet”:结构、原理与实战
深入解析 “1D UNet”:结构、原理与实战 【深度学习入门】1D UNet详解:结构、原理与实战指南一、1D UNet是什么?二、核心结构与功能1. 整体架构2. 编码器(Encoder)3. 解码器(Decoder)4. 跳跃连…...
基于论文的大模型应用:基于SmartETL的arXiv论文数据接入与预处理(二)
上一篇 文章介绍了arXiv采集处理的任务背景、整体需求,并对数据进行了调研。 本文介绍整体方案设计。 4.整体方案设计 4.1.总体流程 基于上述调研了解的情况,针对工作需求设计处理流程如下: 下载kaggle数据集作为流程输入,出…...
Halo 设置 GitHub - OAuth2 认证指南
在当今数字化时代,用户认证的便捷性和安全性愈发重要。对于使用 Halo 搭建个人博客或网站的开发者而言,引入 GitHub - OAuth2 认证能够极大地提升用户登录体验。今天,我们就来详细探讨一下如何在 Halo 中设置 GitHub - OAuth2 认证。 一、为…...
脑影像分析软件推荐 | AIDA介绍
目录 1.软件界面 2.工具包功能简介 3.软件安装注意事项 1.软件界面 2.工具包功能简介 AIDAmri是一种新型的基于图谱的成像数据分析流程,用于处理小鼠大脑的结构和功能数据,包括解剖MRI、基于扩散张量成像(DTI)的纤维追踪以及基…...
SQL:Relationship(关系)
目录 🔗 什么是 Relationship? 三种基本关系类型(基于实体间的关系): 1. 一对一(One-to-One) 2. 一对多(One-to-Many) 3. 多对多(Many-to-Many…...