当前位置: 首页 > news >正文

Python核心容器类型教程:列表、字典、元组、集合用法与实战

容器类型是Python处理数据的核心工具,掌握列表(List)、字典(Dict)、元组(Tuple)、集合(Set)这四类核心容器,能让你高效存储、遍历、操作数据——从简单的数据分析到复杂的业务逻辑开发,都离不开这些基础容器的灵活运用。本文从实战角度拆解四类容器的用法、区别和适用场景,解决新手「该用哪种容器」「怎么高效操作」的核心问题。

一、先理清:四类核心容器的核心定位

不同容器有不同的设计初衷,先明确各自的核心用途,避免用错场景:

容器类型 核心特征 核心用途 可变性
列表(List) 有序、可重复、索引访问 存储有序数据(如用户列表、成绩列表) 可变(可增删改)
字典(Dict) 键值对、无序(3.7+有序)、键唯一 存储关联数据(如用户信息、配置项) 可变(可增删改键值对)
元组(Tuple) 有序、可重复、索引访问 存储不可修改的固定数据(如坐标、常量) 不可变
集合(Set) 无序、不可重复、哈希存储 去重、交集/并集等集合运算(如用户去重) 可变(但元素不可变)

二、列表(List):有序可变的「数据序列」

列表是Python最常用的容器,用[]定义,支持索引、切片、增删改查,适合存储有序且需要频繁修改的数据。

1. 基础定义与访问

 定义列表(可存储不同类型数据,建议统一类型)
score_list = [90, 85, 95, 88]
user_list = ["张三", "李四", "王五"]索引访问(正索引从0开始,负索引从-1开始)
print(score_list[0])   输出:90(第一个元素)
print(user_list[-1])   输出:王五(最后一个元素)切片:获取子列表(左闭右开)
print(score_list[1:3])   输出:[85, 95](索引1到2)
print(score_list[:2])    输出:[90, 85](前2个元素)

2. 核心操作:增删改查

 1. 新增元素
score_list.append(92)   末尾添加:[90, 85, 95, 88, 92]
score_list.insert(1, 89)   索引1处插入:[90, 89, 85, 95, 88, 92]2. 修改元素
score_list[2] = 86   索引2的值改为86:[90, 89, 86, 95, 88, 92]3. 删除元素
score_list.remove(95)   删除指定值:[90, 89, 86, 88, 92]
del score_list[-1]      删除索引-1的元素:[90, 89, 86, 88]
score_list.pop()        弹出末尾元素:[90, 89, 86]4. 查找元素
print(89 in score_list)   输出:True(判断是否存在)
print(score_list.index(89))   输出:1(返回索引)

3. 实用技巧:列表推导式(简化创建)

 生成1-10的偶数列表
even_list = [x for x in range(1, 11) if x % 2 == 0]
print(even_list)   输出:[2, 4, 6, 8, 10]

三、字典(Dict):键值对的「关联数据存储」

字典用{键:值}定义,键(Key)唯一且不可变(字符串、数字、元组),值(Value)可任意,适合存储「名称-值」关联的数据,比如用户信息、商品属性。

1. 基础定义与访问

 定义字典
user_info = {"name": "张三","age": 28,"city": "北京","score": [90, 85]   值可以是列表
}访问值(通过键)
print(user_info["name"])   输出:张三
print(user_info.get("age"))   输出:28(推荐,键不存在时返回None)键不存在时的处理
print(user_info.get("gender", "未知"))   输出:未知(指定默认值)

2. 核心操作:增删改查

 1. 新增/修改键值对(键存在则修改,不存在则新增)
user_info["gender"] = "男"   新增:{"name":"张三", ..., "gender":"男"}
user_info["age"] = 29        修改:age变为292. 删除键值对
del user_info["score"]   删除score键
user_info.pop("city")    弹出city键,返回值:"北京"3. 遍历字典遍历键
for key in user_info.keys():print(key)   输出:name, age, gender遍历值
for value in user_info.values():print(value)   输出:张三, 29, 男遍历键值对(最常用)
for key, value in user_info.items():print(f"{key}:{value}")

3. 实用技巧:字典推导式

 将两个列表转为字典(姓名-成绩)
names = ["张三", "李四"]
scores = [90, 85]
score_dict = {name: score for name, score in zip(names, scores)}
print(score_dict)   输出:{"张三":90, "李四":85}

四、元组(Tuple):不可变的「固定数据序列」

元组用()定义(也可省略括号),有序且不可修改,适合存储不需要变更的固定数据,比如坐标、函数返回多个值。

1. 基础定义与访问

 定义元组
point = (10, 20)   坐标
color = "红", "绿", "蓝"   省略括号访问(和列表一样,索引/切片)
print(point[0])   输出:10
print(color[:2])   输出:('红', '绿')不可变特性(修改会报错)point[0] = 15   报错:TypeError: 'tuple' object does not support item assignment

2. 核心用途

 1. 函数返回多个值(本质是元组)
def get_num():return 1, 2, 3a, b, c = get_num()   解包,a=1, b=2, c=32. 作为字典的键(列表不行,元组可以)
dict_with_tuple_key = {(1, 2): "坐标1",(3, 4): "坐标2"
}

五、集合(Set):无序去重的「数据集合」

集合用{}set()定义,元素唯一且不可变,支持交集、并集、差集等集合运算,核心用途是去重和数据对比。

1. 基础定义与去重

 定义集合(自动去重)
num_set = {1, 2, 2, 3, 3, 3}
print(num_set)   输出:{1, 2, 3}列表去重(转集合再转列表)
repeat_list = [1, 2, 2, 3]
unique_list = list(set(repeat_list))
print(unique_list)   输出:[1, 2, 3](顺序可能变化)

2. 核心操作:集合运算

 定义两个集合
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}并集(a或b中的元素)
print(a | b)   输出:{1, 2, 3, 4, 5, 6}交集(a和b都有的元素)
print(a & b)   输出:{3, 4}差集(a有b没有的元素)
print(a - b)   输出:{1, 2}新增/删除元素
a.add(5)   新增:{1,2,3,4,5}
a.remove(2)   删除:{1,3,4,5}(元素不存在报错)
a.discard(6)   删除:无报错(元素不存在时)

六、四类容器的核心区别与选型建议

场景需求 推荐容器 原因
存储有序、需修改的数据 列表 有序、可变,支持增删改查
存储关联数据(名称-值) 字典 键值对关联,按键快速查找
存储固定、不可修改的数据 元组 不可变,更安全,占用内存少
数据去重、集合运算 集合 自动去重,支持交并差运算

七、常见错误与解决方法

错误现象 根本原因 解决方法
KeyError: 'xxx' 访问字典不存在的键 改用dict.get(key, 默认值)
TypeError: 'tuple' object does not support item assignment 修改元组元素 元组不可变,需修改则转为列表(list(tuple)
TypeError: unhashable type: 'list' 用列表作为字典键/集合元素 换成元组(tuple(list)
集合去重后顺序混乱 集合无序 需保留顺序则用列表+遍历去重([x for i, x in enumerate(lst) if x not in lst[:i]]

八、实战案例:组合使用容器

 存储多个学生信息(列表+字典)
students = [{"name": "张三","age": 28,"scores": {"语文": 90, "数学": 85}},{"name": "李四","age": 27,"scores": {"语文": 88, "数学": 92}}
]遍历并打印每个学生的数学成绩
for student in students:print(f"{student['name']} 数学成绩:{student['scores']['数学']}")输出:张三 数学成绩:85李四 数学成绩:92
http://www.jsqmd.com/news/67432/

相关文章:

  • doc-llm-autotest 基于大模型的文档自动化测试平台:worker服务的可靠性增强
  • 个人电脑本地私有知识库:访答知识库深度解析
  • 58
  • 58
  • TB710FU原厂刷机包下载_CN_ZUI_17.0.04.279_ST_250808
  • Python service Flask generate list data and display in web view via html and javscript
  • 仿真分析工具 Abaqus 2024 下载安装教程:含安装包下载 + 配置教程,新手也能一次成功
  • 香橙派上进行 Livox Mid-360 激光雷达开发(二)移植FAST_LIO
  • Mybatis拦截器原理解析
  • 10406_基于Springboot的社交平台系统
  • aaaa
  • TB331FC原厂刷机包下载_CNZUI_17.0.572_ST_250910
  • 2025云南短视频制作服务商/公司TOP5推荐!昆明等地短视频制作企业榜单发布,赋能企业品牌传播新生态
  • 2025 年 12 月杭州公寓出租权威推荐榜:精选浙江优质房源,温馨宜居与便捷交通的完美之选
  • 解码继承——代码复用与层次化设计
  • 2025年12月北京陪诊公司推荐榜:专业机构对比分析与用户选择指南
  • TB365FC刷机包_CN_ZUXOS_1.1.10.122_ST_250828
  • Python 异步编程:使用 async/await 实现高效并发 - 指南
  • 超越大语言模型:蒸馏技术实战指南
  • TB520FU刷机包_CN_17.0.10.158_ST_250817
  • web框架——flask3.x-上下文管理机制
  • JavaEE初阶——多线程(9)JUC的程序类和死锁
  • [智能体设计模式] 第 1 章:提示链(Prompt Chaining) - 实践
  • 极速AI助手 - 多AI服务桌面助手, 支持MCP工具调用, 内置免费AI功能
  • 蓝鲸花呗客服妙招帮你脱困省油大空间低配拆解银河的“水桶车细节值得吵一架
  • 吴恩达深度学习课程四:计算机视觉 第一周:卷积基础知识(一)图像处理基础
  • Python函数基础实战教程:从定义调用到参数传值全解析
  • 内旋与外旋两种旋转方式
  • 索引数组读取修改添加
  • zsj_蓝桥python系列二_Python 基础语法 _Python 列表推导式