Python 四大核心数据结构:列表、字典、元组、集合

一、快速总览(一眼看懂区别)

名称 符号 有序 可修改 重复 核心特点
列表 (List) [] ✅ 是 ✅ 是 ✅ 可 最常用、有序、可增删改查
元组 (Tuple) () ✅ 是 ❌ 否 ✅ 可 不可修改、安全、速度快
字典 (Dict) {} ✅(3.7+) ✅ 是 ❌ 键不可 键值对、通过名字取值
集合 (Set) {} ❌ 否 ✅ 是 ❌ 不可 自动去重、数学集合运算

二、逐个详解(带代码示例)

1. 列表 (List) ------ 万能数组

用 [] 表示,有序、可修改、可重复 相当于一个有序的储物箱,可以放任意类型数据,随时增删改。

复制代码
# 定义
my_list = [10, "Python", True, 3.14]

# 常用操作
my_list.append("新增")    # 末尾添加
my_list[0] = 100          # 修改第1个元素
del my_list[1]            # 删除元素
print(my_list[0])         # 取值:按索引(从0开始)

适用场景:存有序列表(如学生名单、商品列表)


2. 元组 (Tuple) ------ 不可修改的列表

用 () 表示,有序、不可修改、可重复 和列表几乎一样,但一旦创建就不能改,更安全、更快。

复制代码
# 定义
my_tuple = (10, "Python", True)

# 只能取值,不能增删改
print(my_tuple[1])  # 输出 Python

# 尝试修改会报错!
# my_tuple[0] = 100  # 报错

适用场景:固定不变的数据(如坐标、配置信息、函数返回多值)


3. 字典 (Dict) ------ 键值对映射

用 {key: value} 表示,键值对、可修改、键不可重复 相当于查字典 :通过键 (key) 快速找 值 (value)。

复制代码
# 定义:键: 值
person = {
    "name": "小明",
    "age": 20,
    "city": "北京"
}

# 取值:用键,不用索引
print(person["name"])  # 小明

# 修改/添加
person["age"] = 21
person["gender"] = "男"

适用场景:描述一个对象的属性(用户信息、商品详情、接口数据)


4. 集合 (Set) ------ 自动去重

用 {} 表示,无序、无索引、无重复 最大特点:自动去掉重复值,支持数学交集 / 并集 / 差集。

复制代码
# 定义(自动去重)
my_set = {1, 2, 2, 3, 3, 3}
print(my_set)  # 输出 {1,2,3}

# 常用操作
my_set.add(4)    # 添加
my_set.remove(2) # 删除

# 数学运算
a = {1,2,3}
b = {3,4,5}
print(a & b)  # 交集 {3}
print(a | b)  # 并集 {1,2,3,4,5}

适用场景:去重、判断元素是否存在、集合运算(如共同好友)


三、最简单记忆口诀

  1. 要有序、能修改 → 用 列表 []
  2. 要有序、不能改 → 用 元组 ()
  3. 要键值对、查得快 → 用 字典 {}
  4. 要去重、算集合 → 用 集合 {}

四、最常用操作速查表

操作 列表 元组 字典 集合
创建 [] () {k:v} {}
取值 [索引] [索引] [键] 不支持
修改 ✅ ❌ ✅ ✅
去重 ❌ ❌ 键去重 ✅
顺序 有 有 有 (3.7+) 无
相关推荐
wangchunyu1148 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
2501_9445215910 小时前
Immer 跨端三方库仓颉适配全流程
python·eclipse·django
信誓旦旦的程序猿10 小时前
【Python量化实战宝典 #26】止损与回撤控制手册:移动止损、最大回撤(Python 可跑)
python·1024程序员节·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
2501_9445215910 小时前
Deepmerge 跨端三方库仓颉适配全流程
java·python·eclipse·github
Patrick在香港10 小时前
同一行 strftime,两台机器跑出两种日期
python·datetime·时区·locale·日期处理
2601_9679873711 小时前
用Python+OpenCV+YOLO写个游戏脚本:从自动瞄准到自动采集的保姆级教程
python·opencv·yolo·目标检测·游戏自动化
meiying883811 小时前
快递单号批量查询Python脚本:从手动到自动化的完整实现
开发语言·python·自动化
人工智能导论实践课11 小时前
【GUI桌面开发3】PyCharm配置外部工具
ide·python·pycharm
一千柯橘11 小时前
LangChain 的实时输出处理: stream_events 和 Streaming
python·langchain·agent
LannyChung11 小时前
PowerShell 下 git log 中文乱码的完整排查与解决
windows·git