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

news/2025/12/8 21:27:56/文章来源:https://www.cnblogs.com/jstsj/p/19323721

容器类型是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.mzph.cn/news/993582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

doc-llm-autotest 基于大模型的文档自动化测试平台:worker服务的可靠性增强

一、可靠性分析 从架构图上,我们可以看出worker调用大模型服务过程中,会发生阻塞等待,如果此时worker异常容器挂掉了,那么此次任务状态会一直为processing,并且因为redis关联task_id的消息已经被消费了,那么这个…

个人电脑本地私有知识库:访答知识库深度解析

个人电脑本地私有知识库:访答知识库深度解析 什么是本地私有知识库? 本地私有知识库是一种将知识数据存储在个人电脑本地的管理工具,与云端存储不同,它提供了更高的数据安全性和隐私保护。用户可以在不依赖网络的情…

58

所学时间:11小时

TB710FU原厂刷机包下载_CN_ZUI_17.0.04.279_ST_250808

联想小新平板Pro GT原厂刷机包下载原厂刷机包下载https://pan.quark.cn/s/8e72cb38987b联想小新平板Pro GT原厂刷机包下载

Python service Flask generate list data and display in web view via html and javscript

python -m pip install flask python -m pip install flask-cors //Flaskfrom flask import Flask,jsonify,send_from_directory from flask_cors import CORS import uuid import time import os from datetime impor…

仿真分析工具 Abaqus 2024 下载安装教程:含安装包下载 + 配置教程,新手也能一次成功

一、Abaqus 2024 核心功能 做机械设计、土木工程、航空航天仿真的朋友,对 Abaqus 肯定不陌生 —— 它是 DS SIMULIA Suite 旗下的顶尖有限元分析软件,2024 版本在稳定性、计算效率和模块兼容性上又做了升级,不管是常…

香橙派上进行 Livox Mid-360 激光雷达开发(二)移植FAST_LIO

香橙派上进行 Livox Mid-360 激光雷达开发(二)移植FAST_LIO基本信息 主机:Orangepi5max 16G (ARM64 架构) + 64G tf卡 系统:Orangepi5max_1.0.0_ubuntu_jammy_desktop_xfce_linux5.10.160(ubuntu 22.04) 系统配…

Mybatis拦截器原理解析

一、概述 在Mybatis开发体系中,“过滤器”是开发者对Mybatis拦截器(Plugin)的通俗称呼,它是Mybatis提供的核心扩展机制——无需修改框架源码,就能对SQL执行全流程进行增强,比如分页插件、通用字段自动填充、数据…

10406_基于Springboot的社交平台系统

1、项目包含 项目源码、项目文档、数据库脚本、软件工具等资料; 带你从零开始部署运行本套系统。 2、项目介绍 本文采用SpringBoot进行设计,采用java技术开发,选用MySQL作为后台数据库。系统针对社交平台的需求,包…

aaaa

"""https://openweathermap.org/apihttps://www.openweathermap.org/current、https://openweathermap.org/current#multi 文档(parameters)unknowspeople1@gmail.com"""import json…

TB331FC原厂刷机包下载_CNZUI_17.0.572_ST_250910

联想平板小新Pad 2024 11英寸 学习办公娱乐影音平板电脑原厂刷机包下载原厂刷机包下载https://pan.quark.cn/s/7cbc148ab4f8 联想平板小新Pad 2024 11英寸 学习办公娱乐影音平板电脑原厂刷机包下载

2025云南短视频制作服务商/公司TOP5推荐!昆明等地短视频制作企业榜单发布,赋能企业品牌传播新生态

随着短视频成为企业品牌营销与用户互动的核心载体,市场对专业短视频制作服务的需求持续攀升。本榜单基于技术创新力、内容创作力、行业适配性及服务效能四大维度,结合主流平台数据反馈与客户案例实证,权威解析2025年…

2025 年 12 月杭州公寓出租权威推荐榜:精选浙江优质房源,温馨宜居与便捷交通的完美之选

2025 年 12 月杭州公寓出租权威推荐榜:精选浙江优质房源,温馨宜居与便捷交通的完美之选 随着城市化进程的深化与新经济业态的蓬勃发展,杭州及整个浙江省的住房租赁市场正经历着一场深刻的品质化与专业化变革。公寓出…

2025年12月北京陪诊公司推荐榜:专业机构对比分析与用户选择指南

在医疗资源高度集中但就医流程日趋复杂的北京,陪诊服务已成为缓解异地就医、老年就诊、行动不便等群体就医困境的重要支撑。据第三方市场调研数据显示,2025年北京陪诊服务需求年均增长率超30%,但市场机构良莠不齐,…

解码继承——代码复用与层次化设计

继承的核心概念 继承的核心是基于已有类(基类)创建新类(派生类),实现代码复用和层次化的类结构设计,让派生类既能复用基类的属性和方法,又能扩展自身特有的功能,体现现实世界中事物的 “一般 - 特殊” 关系(如…

TB365FC刷机包_CN_ZUXOS_1.1.10.122_ST_250828

联想小新平板12.1 2025款12.1英寸2.5K旗舰性能AI平板电脑原厂刷机包下载原厂刷机包下载https://pan.quark.cn/s/0e96a971aa79 联想小新平板12.1 2025款12.1英寸2.5K旗舰性能AI平板电脑原厂刷机包下载

Python 异步编程:使用 async/await 实现高效并发 - 指南

Python 异步编程:使用 async/await 实现高效并发 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas…

超越大语言模型:蒸馏技术实战指南

本文探讨了如何通过模型蒸馏技术将大型语言模型的知识压缩到更小、更快的任务特定组件中,以实现更好的模块化、透明度、数据隐私和成本效益。文章提供了从原型到生产的实用步骤,并通过案例分析展示了蒸馏后模型在精度…

TB520FU刷机包_CN_17.0.10.158_ST_250817

联想YOGA Pad Pro AI元启 12.7英寸 影音办公学习平板电脑原厂刷机包下载原厂刷机包下载https://pan.quark.cn/s/f93e5a5a5f5b联想YOGA Pad Pro AI元启 12.7英寸 影音办公学习平板电脑刷机包

web框架——flask3.x-上下文管理机制

flask3.x——上下文管理机制1. 上下文隔离核心目标:解决多请求并发时的数据混乱问题,让每个请求的相关数据互不干扰,为接收请求时做环境铺垫。实现工具:用contextvars模块里面的contextvar类 解决线程/协程数据隔离…