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/23 8:15:47 阅读更多 →
儿童护眼台灯推荐品牌有哪些?高口碑护眼灯整理,保护孩子眼睛

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

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

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

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

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

2026/7/23 15:50:15 阅读更多 →

最新新闻

HTML元素单元格:用自定义 CellType 扩展 SpreadJS 的显示能力

HTML元素单元格:用自定义 CellType 扩展 SpreadJS 的显示能力

有些表格单元格不只是一个数字或一句纯文本。报表里可能要显示上标公式,说明单元格里可能要有删除线、标题层级和彩色强调,业务模板里也可能希望把一小段富文本放进格子里。这个 demo 展示了 SpreadJS 的一条扩展路径:创建自定义单元格类型&a…

2026/7/23 17:19:08 阅读更多 →
Openwrt/Lede软路由设置为旁路由模式

Openwrt/Lede软路由设置为旁路由模式

问题由来:我的软路由是放在客厅的,同时还兼NAS等功能,其它房间的网线均是从弱电箱牵过去的,且想把家里所有设备均设置在同一网段,但遗憾的是我的弱电箱到客厅只埋了1根网线,而弱电箱又是封闭的,…

2026/7/23 17:19:08 阅读更多 →
当表格数据来自外部系统:SpreadJS 如何让异步公式一键刷新

当表格数据来自外部系统:SpreadJS 如何让异步公式一键刷新

今天的企业表格,越来越少是孤立的。 销售报价要读取最新价格,库存计划要看实时库存,财务测算要取汇率,风控模型要调用评分服务,项目排期可能还要拿外部系统里的工时和状态。用户看到的是一张表,背后却连接着…

2026/7/23 17:19:08 阅读更多 →
Windows系统安装OpenClaw并使用Qwen千问接入飞书教程 ??

Windows系统安装OpenClaw并使用Qwen千问接入飞书教程 ??

Windows系统安装OpenClaw并使用Qwen千问接入飞书教程 概述在企业协作场景中,飞书作为高效办公平台,常需要集成AI能力。本教程将详细讲解如何在Windows系统上安装OpenClaw(一个轻量级API网关),并配置Qwen千问大模型&…

2026/7/23 17:19:08 阅读更多 →
npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。

场景公司给我的新电脑,我拿来下载vscode和node.js之后构架一个react指令,尝试去执行npm run dev跑错,发现出现以下问题问题npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息&#x…

2026/7/23 17:19:08 阅读更多 →
【快见刊、多届数、择优推荐至SUCI出版】第八届土木工程、环境资源与能源材料国际学术会议(CCESEM 2026)

【快见刊、多届数、择优推荐至SUCI出版】第八届土木工程、环境资源与能源材料国际学术会议(CCESEM 2026)

在全球城市化进程加速、气候变化挑战日益严峻、能源结构转型迫在眉睫的背景下,土木工程、环境资源与能源材料等领域的研究与实践显得尤为重要。第八届土木工程、环境资源与能源材料国际学术会议(CCESEM 2026)将于2026年8月28日至30日在中国郑…

2026/7/23 17:18:08 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/22 12:54:44 阅读更多 →

月新闻