python中的五种基本数据结构
1. 引言Python 作为一门简洁高效的编程语言其内置的数据结构是编程基础的核心。掌握str字符串、list列表、tuple元组、dict字典和set集合这五种基本数据结构是编写高质量 Python 代码的关键。本文将对这五种数据结构进行系统性汇总涵盖其特性、常用操作、适用场景及性能考量帮助您构建扎实的 Python 基础。2. 字符串str字符串是 Python 中最常用的数据类型之一用于表示文本信息。2.1 基本特性不可变性字符串创建后不能修改任何修改操作都会返回一个新的字符串。有序序列字符串中的字符按顺序排列支持索引和切片。Unicode 编码Python 3 默认使用 Unicode支持多语言字符。2.2 创建与表示# 创建字符串s1单引号字符串s2双引号字符串s3多行 字符串s4双引号 多行字符串2.3 常用操作# 索引与切片textPython数据结构print(text[0])# P - 正向索引print(text[-1])# 构 - 负向索引print(text[0:6])# Python - 切片print(text[6:])# 数据结构 - 从索引6到末尾# 字符串方法s Hello, World! print(s.strip())# Hello, World! - 去除两端空格print(s.lower())# hello, world! - 转小写print(s.upper())# HELLO, WORLD! - 转大写print(s.replace(World,Python))# Hello, Python! print(s.split(,))# [ Hello, World! ] - 分割print(Python.find(th))# 2 - 查找子串位置# 格式化nameAliceage25print(f姓名{name}年龄{age})# f-string推荐print(姓名{}年龄{}.format(name,age))# format方法2.4 适用场景文本处理、日志记录、用户输入处理配置文件读取、数据序列化JSON、XML正则表达式匹配、模板渲染3. 列表list列表是 Python 中最灵活、最常用的可变序列。3.1 基本特性可变性可以随时添加、删除或修改元素。有序性元素按插入顺序存储支持索引。异构性可以包含不同类型的元素。动态扩容自动管理内存无需预先指定大小。3.2 创建与基本操作# 创建列表list1[]# 空列表list2[1,2,3,4,5]# 整数列表list3[a,b,c]# 字符串列表list4[1,hello,3.14,True]# 混合类型列表list5list(range(10))# 使用list()构造函数# 列表推导式高效创建squares[x**2forxinrange(10)]# [0, 1, 4, 9, ..., 81]even_numbers[xforxinrange(20)ifx%20]3.3 常用操作# 增删改查my_list[1,2,3,4,5]# 增加元素my_list.append(6)# 末尾添加: [1, 2, 3, 4, 5, 6]my_list.insert(2,99)# 指定位置插入: [1, 2, 99, 3, 4, 5, 6]my_list.extend([7,8,9])# 扩展列表: [1, 2, 99, 3, 4, 5, 6, 7, 8, 9]# 删除元素poppedmy_list.pop()# 删除并返回最后一个元素: 9removedmy_list.pop(2)# 删除索引2的元素: 99my_list.remove(3)# 删除第一个值为3的元素delmy_list[0:2]# 删除切片范围内的元素# 修改元素my_list[0]100# 直接赋值修改# 查找与判断print(5inmy_list)# True - 成员检查print(my_list.index(4))# 返回第一个值为4的索引print(my_list.count(5))# 统计值为5的元素个数# 排序与反转nums[3,1,4,1,5,9,2]nums.sort()# 原地排序: [1, 1, 2, 3, 4, 5, 9]sorted_numssorted(nums,reverseTrue)# 降序排序返回新列表nums.reverse()# 原地反转3.4 列表切片高级用法my_list[0,1,2,3,4,5,6,7,8,9]# 基本切片print(my_list[2:5])# [2, 3, 4]print(my_list[:5])# [0, 1, 2, 3, 4]print(my_list[5:])# [5, 6, 7, 8, 9]print(my_list[::2])# [0, 2, 4, 6, 8] - 步长为2print(my_list[::-1])# [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] - 反转# 切片赋值修改多个元素my_list[2:5][20,30,40]# 替换切片范围内的元素my_list[1:1][11,12,13]# 在索引1处插入多个元素3.5 适用场景存储有序数据集合如日志记录、时间序列实现栈append/pop和队列collections.deque临时存储需要频繁修改的数据数据预处理和转换4. 元组tuple元组是不可变的序列通常用于存储不可修改的数据集合。4.1 基本特性不可变性创建后不能修改确保数据安全。有序性元素按定义顺序存储支持索引。轻量级比列表更节省内存创建速度更快。可哈希性如果所有元素都是可哈希的元组本身也可哈希可作为字典键。4.2 创建与使用# 创建元组t1()# 空元组t2(1,2,3)# 多个元素t31,2,3# 括号可省略逗号是关键t4(42,)# 单元素元组必须有逗号t5tuple([1,2,3])# 从列表转换# 元组解包强大特性point(10,20)x,ypoint# x10, y20# 交换变量值a,b1,2a,bb,a# a2, b1# 函数返回多个值defget_stats(numbers):returnmin(numbers),max(numbers),sum(numbers)/len(numbers)minimum,maximum,averageget_stats([1,2,3,4,5])4.3 常用操作my_tuple(1,2,3,2,4,2,5)# 索引与切片与列表相同print(my_tuple[0])# 1print(my_tuple[-1])# 5print(my_tuple[1:4])# (2, 3, 2)# 查找与统计print(3inmy_tuple)# Trueprint(my_tuple.index(2))# 1 - 第一个2的索引print(my_tuple.count(2))# 3 - 2出现的次数# 元组拼接创建新元组t1(1,2,3)t2(4,5,6)t3t1t2# (1, 2, 3, 4, 5, 6)t4t1*2# (1, 2, 3, 1, 2, 3)4.4 命名元组collections.namedtuplefromcollectionsimportnamedtuple# 定义命名元组类型Pointnamedtuple(Point,[x,y])Colornamedtuple(Color,[red,green,blue,alpha])# 创建实例pPoint(10,20)cColor(255,0,0,255)# 访问元素print(p.x,p.y)# 10 20比p[0], p[1]更清晰print(c.red,c.alpha)# 255 255# 转换为字典print(p._asdict())# {x: 10, y: 20}# 替换字段值创建新实例p2p._replace(x30)# Point(x30, y20)4.5 适用场景函数返回多个值字典键需要不可变、可哈希的值配置参数、常量定义保证数据不被意外修改数据库查询结果记录行5. 字典dict字典是 Python 中最重要的数据结构之一用于存储键值对映射。5.1 基本特性键值对存储每个元素包含一个键和一个值。无序性Python 3.7 保持插入顺序但本质仍是基于哈希表。键的唯一性键必须是不可变类型字符串、数字、元组。高效查找基于哈希表实现平均 O(1) 时间复杂度查找。动态扩容自动调整大小以适应更多元素。5.2 创建与初始化# 创建字典d1{}# 空字典d2{name:Alice,age:25}# 直接定义d3dict(nameBob,age30)# 使用dict()构造函数d4dict([(name,Charlie),(age,35)])# 从键值对列表d5dict.fromkeys([a,b,c],0)# 相同初始值: {a:0, b:0, c:0}# 字典推导式squares{x:x**2forxinrange(5)}# {0:0, 1:1, 2:4, 3:9, 4:16}even_squares{x:x**2forxinrange(10)ifx%20}5.3 常用操作person{name:Alice,age:25,city:Beijing}# 访问元素print(person[name])# Alice - 直接访问print(person.get(age))# 25 - 使用get方法print(person.get(country,China))# China - 提供默认值# 添加与修改person[email]aliceexample.com# 添加新键值对person[age]26# 修改已有键的值person.update({city:Shanghai,job:Engineer})# 批量更新# 删除元素emailperson.pop(email)# 删除并返回值itemperson.popitem()# 删除并返回最后一对键值Python 3.7delperson[city]# 删除指定键person.clear()# 清空字典# 遍历字典forkeyinperson:# 遍历键print(key,person[key])forkey,valueinperson.items():# 遍历键值对print(f{key}:{value})forvalueinperson.values():# 遍历值print(value)# 检查键是否存在print(nameinperson)# Trueprint(countrynotinperson)# True5.4 字典视图对象person{name:Alice,age:25,city:Beijing}keys_viewperson.keys()# dict_keys([name, age, city])values_viewperson.values()# dict_values([Alice, 25, Beijing])items_viewperson.items()# dict_items([(name, Alice), ...])# 视图是动态的person[job]Engineerprint(list(keys_view))# [name, age, city, job]# 集合操作仅keys视图支持d1{a:1,b:2,c:3}d2{b:2,c:3,d:4}print(d1.keys()d2.keys())# {b, c} - 交集print(d1.keys()-d2.keys())# {a} - 差集5.5 默认字典collections.defaultdictfromcollectionsimportdefaultdict# 默认值为0的字典word_countdefaultdict(int)forwordin[apple,banana,apple,orange,banana,apple]:word_count[word]1# defaultdict(class int, {apple: 3, banana: 2, orange: 1})# 默认值为列表的字典group_by_lengthdefaultdict(list)words[apple,bat,cat,elephant,dog]forwordinwords:group_by_length[len(word)].append(word)# defaultdict(class list, {5: [apple], 3: [bat, cat, dog], 8: [elephant]})5.6 适用场景缓存、备忘录Memoization配置管理、环境变量数据库查询结果映射统计计数、分组聚合对象属性存储6. 集合set集合是无序、不重复元素的容器基于哈希表实现。6.1 基本特性无序性元素没有固定顺序Python 3.7 保持插入顺序但不保证。唯一性自动去重每个元素只出现一次。可变性set可变frozenset不可变。高效成员检查平均 O(1) 时间复杂度。支持集合运算并集、交集、差集等。6.2 创建与初始化# 创建集合s1set()# 空集合不能用{}{}是空字典s2{1,2,3,4,5}# 直接定义s3set([1,2,2,3,3,4])# 从列表去重: {1, 2, 3, 4}s4set(hello)# 从字符串: {h, e, l, o}# 集合推导式even_squares{x**2forxinrange(10)ifx%20}# {0, 4, 16, 36, 64}6.3 常用操作# 基本操作s{1,2,3,4,5}# 添加元素s.add(6)# {1, 2, 3, 4, 5, 6}s.update([7,8,9])# 添加多个元素# 删除元素s.remove(3)# 删除元素3不存在则报错s.discard(10)# 删除元素10不存在也不报错poppeds.pop()# 随机删除并返回一个元素s.clear()# 清空集合# 集合运算A{1,2,3,4,5}B{4,5,6,7,8}print(A|B)# {1, 2, 3, 4, 5, 6, 7, 8} - 并集print(AB)# {4, 5} - 交集print(A-B)# {1, 2, 3} - 差集在A不在Bprin

相关新闻

MRTK性能监控实战:从原理到方案,解决混合现实应用卡顿与优化

MRTK性能监控实战:从原理到方案,解决混合现实应用卡顿与优化

1. 项目概述:为什么MR应用的性能监控如此重要?在混合现实(MR)应用开发中,性能问题从来都不是一个“小毛病”。它直接关系到用户体验的生死线。想象一下,你精心设计的全息模型在用户眼前卡顿、抖动&#xff…

2026/7/22 4:42:31阅读更多 →
儿童护眼台灯推荐品牌有哪些?高口碑护眼灯整理,保护孩子眼睛

儿童护眼台灯推荐品牌有哪些?高口碑护眼灯整理,保护孩子眼睛

​很多家长纠结又无奈:预算花到位了,买的却是鸡肋护眼灯。市面上护眼台灯两极分化严重,便宜的全是噱头,高价的又溢价严重,普通家长根本不知道该怎么选。很多产品宣传天花乱坠,实际上根本不护眼,…

2026/7/22 4:42:31阅读更多 →
高并发状态管理框架设计:从游戏技能系统到通用项目架构

高并发状态管理框架设计:从游戏技能系统到通用项目架构

1. 项目概述:从游戏到项目的系统设计思维在游戏开发,尤其是像《王者荣耀》这类MOBA游戏中,技能与Buff系统是战斗体验的核心。一个英雄释放技能,给自身或队友加上攻击力Buff,或者给对手挂上减速、眩晕的Debuff&#xff…

2026/7/22 4:42:31阅读更多 →
虚实共生:AR数字孪生如何重构工业运维新范式

虚实共生:AR数字孪生如何重构工业运维新范式

在工业4.0的深水区,运维(O&M)正从“被动响应”向“预测性维护”和“沉浸式交互”转型。传统的SCADA系统虽然实现了数据的可视化,但数据与物理实体之间始终存在一层“认知隔阂”——工程师需要在大脑中将二维屏幕上的报警代码映…

2026/7/22 5:30:40阅读更多 →
离子风机联网实时监控哪个厂家可靠

离子风机联网实时监控哪个厂家可靠

老友,咱今天不聊什么高大上的“工业4.0”或者“智能制造”,咱们就从一个生产线上最烦人的老大难说起——静电。你做过电子这一行,肯定懂。生产线上的静电,就跟房间里飘着的毛球似的,看不见摸不着,但一个不小…

2026/7/22 5:30:40阅读更多 →
PYTHON+AI LLM DAY ONE HUNDRED AND THRETEEN

PYTHON+AI LLM DAY ONE HUNDRED AND THRETEEN

今天聊聊Harmony算法:Harmony Search (HS) - 和声搜索算法这是一种元启发式全局优化算法,由韩国学者 Geem Z W 等人于 2001 年提出。核心灵感:该算法模拟了音乐创作中的“即兴演奏”过程。在乐队合奏时,乐师们会凭借记忆,通过反复…

2026/7/22 5:30:40阅读更多 →
UE4SS脚本系统:Lua动态扩展虚幻引擎4的开发指南

UE4SS脚本系统:Lua动态扩展虚幻引擎4的开发指南

1. 项目概述:UE4SS是什么,以及为什么你需要它如果你正在用虚幻引擎4(UE4)做项目,无论是独立游戏开发、影视动画制作,还是技术美术研究,大概率都遇到过这样的困境:引擎自带的蓝图和C虽…

2026/7/22 5:30:40阅读更多 →
多层双向LSTM:结构原理、PyTorch实现与NLP应用实战

多层双向LSTM:结构原理、PyTorch实现与NLP应用实战

在自然语言处理任务中,LSTM(长短期记忆网络)因其能够有效捕捉长距离依赖关系而成为序列建模的重要工具。但实际项目中,单层单向的 LSTM 往往难以应对复杂语义和上下文信息,因此多层、双向以及多层双向 LSTM 成为更常见…

2026/7/22 5:30:40阅读更多 →
Unity渲染优化实战:遮挡剔除与LOD技术深度解析与应用

Unity渲染优化实战:遮挡剔除与LOD技术深度解析与应用

1. 项目概述:为什么你的Unity场景总是“卡”?做Unity开发的朋友,尤其是做稍微复杂一点的3D项目,比如开放世界、大型室内场景或者MMO,肯定都遇到过这个头疼的问题:编辑器里跑得挺流畅,一打包出来…

2026/7/22 5:28:40阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →