尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

Python核心容器类型教程:列表、字典、元组、集合用法与实战
📅 发布时间:2026/6/19 4:55:50

容器类型是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

相关新闻

  • 个人电脑本地私有知识库:访答知识库深度解析
  • 58
  • Python service Flask generate list data and display in web view via html and javscript

最新新闻

  • Onekey完整教程:一键解锁Steam游戏DLC的终极方案
  • 2026年南京知名3D效果图制作公司大盘点,你知道几家?
  • S12 MSCAN与SCI模块深度解析:低功耗、中断与安全初始化实战
  • MPV播放器懒人包:3分钟打造专业级视频播放体验
  • 2026年6月经验丰富的升降货梯生产公司哪家便宜,导轨式货梯升降机/厂房升降货梯/四柱液压货梯,升降货梯工厂平价推荐 - 品牌推荐师
  • 4.19周总结

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号