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

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

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

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

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

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

2026/7/22 4:42:34 阅读更多 →

最新新闻

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:49 阅读更多 →
UE4SS脚本系统:Lua动态扩展虚幻引擎4的开发指南

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

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

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

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

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

2026/7/22 5:30:49 阅读更多 →
OpenSSL 详细介绍

OpenSSL 详细介绍

OpenSSL 详细介绍 一、概述 OpenSSL 是一个开源的、功能强大的密码学工具包,广泛用于实现 SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)协议,以及提供通用的密码学功能。它是互联网安全通信…

2026/7/22 5:30:49 阅读更多 →
Linux嵌入式C学习Day2|彻底搞懂gcc四步编译 + C语言全部基础数据类型

Linux嵌入式C学习Day2|彻底搞懂gcc四步编译 + C语言全部基础数据类型

前言昨天Day1熟悉了Linux终端命令、vi编辑器、gcc一键编译运行,今天Day2深入底层:拆解gcc完整编译四阶段,系统吃透C语言所有基础数据类型、进制、常量变量,搞懂代码从.c源码到可执行程序的完整流程,夯实嵌入式C开发底层…

2026/7/22 5:30:49 阅读更多 →
GORK实战:基于生成式AI的MMORPG怪物自动化生成系统设计与实现

GORK实战:基于生成式AI的MMORPG怪物自动化生成系统设计与实现

1. 项目概述:当AI成为游戏世界的造物主最近在捣鼓一个挺有意思的东西,我把它叫做“GORK实战”。简单来说,就是尝试用当下流行的AI技术,去解决一个经典的游戏开发难题:如何高效、批量且高质量地生成MMORPG(大…

2026/7/22 5:29:49 阅读更多 →

日新闻

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

TI DSP系统配置模块SYSCFG详解:中断机制与主设备优先级配置实战

1. 项目概述与SYSCFG模块的核心价值在嵌入式系统,尤其是像TI C6000系列这样的高性能DSP开发中,我们常常会与芯片手册里那些密密麻麻的寄存器打交道。很多开发者可能更关注算法实现、内存优化或者外设驱动,但对于一个稳定、高效的系统而言&…

2026/7/22 0:00:26 阅读更多 →
微信Server酱:高到达率的应急通知方案实践

微信Server酱:高到达率的应急通知方案实践

1. 为什么我们需要"最次"的通知方案? 在数字化协作环境中,消息通知系统的重要性不言而喻明。但现实情况是,企业级通知方案往往需要复杂的API对接(如企业微信、钉钉、飞书),个人开发者的小项目又经…

2026/7/22 0:00:26 阅读更多 →
甲方要的“简洁“PPT,到底是简洁还是省事?

甲方要的“简洁“PPT,到底是简洁还是省事?

甲方说"简洁一点",乙方听到的是"少做几页"。甲方说"不要太复杂",乙方理解成"别放图表了"。结果交过去,甲方说"我说的简洁不是这个意思"。"简洁"这个词在PPT语境里,是…

2026/7/22 0:00:26 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/7/21 8:25:39 阅读更多 →

月新闻