当前位置:首页>python>Python数据类型:列表、元组、字典、集合、字符串

Python数据类型:列表、元组、字典、集合、字符串

  • 2026-10-11 07:47:06
Python数据类型:列表、元组、字典、集合、字符串

Python数据类型中列表、元组、字典、集合、字符串,很重要,但是发现学完后容易混淆。

最近我深有体会,也有如下疑问:

“我学了列表、元组、字典、集合、字符串,感觉它们长得好像啊,都是装东西的‘盒子’。可是用的时候总是搞混,不知道选哪个。而且为什么要有这么多不同的类型?能不能统一用一种啊?”

今天,我们一起用一把“收纳神器”的比喻,把Python的这五种数据类型重新学习一遍,学东西一定要学的明明白白。不仅知道它们是什么,还要知道什么时候用哪个。

一、先看一张“全家福”

小贴士:Python 3.7+ 字典保留插入顺序,“无序”是历史版本的特性,使用时要注意Python版本。

二、用一个生活场景秒懂

想象你要整理自己的房间:

  • 字符串:就是一串珍珠项链,每颗珍珠就是一个字符。你只能换整条项链,不能单独拆一颗(不可变)。
  • 列表:像磁吸收纳盒,你可以随时往里加东西、拿走东西、调换位置(可变、有序)。
  • 元组:像密封好的相册,一旦封好就不能改(不可变),但你仍然可以按顺序翻看(有序)。
  • 字典:像带标签的文件柜,每个抽屉有个标签(键),你根据标签直接找文件(值),不用翻遍所有抽屉。
  • 集合:像抽奖箱,里面的球不能重复,而且你只管“有没有这个号码”,不管顺序。

三、逐个解剖

1. 字符串

字符串就是一串字符按顺序排好,而且不能修改(不可变)。

name = "Python"
# 尝试修改:name[0] = 'J'  ❌ 会报错!

# 但可以重新赋值(换一条新项链)
name = "Java"# ✅ 这是换了一条项链,不是修改原项链

常用操作:

s = "hello world"
print(s.upper())          # HELLO WORLD
print(s.replace("world", "Python"))  # hello Python
print(len(s))             # 11(空格也算)
print(s[1:4])             # ell(切片)

使用场景:任何文本处理,比如用户名、邮件内容、文件路径。

2. 列表

列表用方括号 [],可以放任何类型的元素,可以随便改。

shopping = ["苹果", "香蕉", "牛奶"]
shopping.append("面包")      # 加一个
shopping[1] = "草莓"# 改第二个
shopping.remove("苹果")      # 删除
print(shopping)              # ['草莓', '牛奶', '面包']

特点:

  • 有序(按你添加的顺序排)
  • 可变(可以增删改)
  • 元素可以重复

使用场景:购物车、待办事项、动态数据序列。

3. 元组

元组用圆括号 (),一旦创建死活不能改。

colors = ("红", "绿", "蓝")
# colors[0] = "黄"   ❌ 报错!不能改

# 只能读
print(colors[1])     # 绿
print(len(colors))   # 3

为什么需要元组?

  • 安全:传给函数的数据不会被意外修改
  • 速度:比列表快一点点
  • 可以作为字典的键(列表不行)

使用场景:一周七天、坐标点(x,y)、数据库配置信息。

4. 字典

字典用花括号 {},里面是 键:值 对。通过键直接取值,不需要记住位置。

student = {
"name": "小明",
"age": 18,
"score": 95
}
print(student["name"])      # 小明
student["class"] = "3班"# 加一对
student["age"] = 19# 改值

# 安全取值方式
print(student.get("gender", "未知"))  # 未知,不会报错

特点:

  • 键必须唯一(重复会覆盖)
  • 键必须是不可变类型(字符串、数字、元组)
  • Python 3.7+ 保留插入顺序

使用场景:用户信息、配置参数、缓存数据。

5. 集合

集合也用花括号 {},但里面只有一个一个的元素,没有冒号。

A = {1, 2, 3, 2, 1}   # 自动去重 -> {1, 2, 3}

# 常用操作
A.add(4)
A.remove(2)
print(3in A)          # True

# 集合运算
B = {3, 4, 5}
print(A & B)   # 交集 {3,4}
print(A | B)   # 并集 {1,3,4,5}

注意:空集合不能写 {}(那是空字典),要写 set()。

使用场景:去重、共同好友、权限标签(判断某个元素是否存在)。

四、终极对比表(建议收藏)📌

类型
写法示例
是否有序
是否可变
元素是否可重复
是否支持索引/切片
字符串
"abc"
✅
❌
✅
✅
列表
[1,2,3]
✅
✅
✅
✅
元组
(1,2,3)
✅
❌
✅
✅
字典
{"a":1}
✅*
✅
键不可重复,值可重复
通过键访问
集合
{1,2,3}
❌
✅
❌
❌

五、什么时候用哪个?

简易口诀:

  • 只读、当钥匙 → 元组
  • 随意改、按顺序 → 列表
  • 标签找东西 → 字典
  • 去重、判成员 → 集合
  • 纯文本 → 字符串

六、新手最常踩的3个坑

坑1:误用 = 复制可变对象

a = [1, 2, 3]
b = a        # b和a指向同一个列表
b.append(4)
print(a)     # [1,2,3,4] ❌ a也被改了!

# 正确复制:b = a.copy() 或 b = a[:]

坑2:把列表当字典的键

# ❌ 报错
d = {[1,2]: "value"}

# ✅ 改用元组
d = {(1,2): "value"}

坑3:集合的 {} 和字典的 {} 搞混

empty_dict = {}      # 字典
empty_set = set()    # 集合
not_empty_set = {1}  # 集合(有一个元素)

七、小练习

  1. 有一个列表 nums = [3,1,4,1,5,9,2,6,5,3],怎么得到去重后的列表?
  2. 想存储一个学生的姓名、年龄、身高,并且以后可能会修改年龄,该用哪种类型?
  3. 如果要把 (1,2,3) 和 [1,2,3] 作为字典的键,哪个能成功?

学编程语言(Python也适用)的数据类型,不要死记硬背,而是多写代码、多踩坑。遇上错误去解决,就能记住了。

最新文章

随机文章