Python 新手必学:一文搞懂 str、list、tuple、dict、set 五大数据类型
前言
刚接触 Python 的朋友往往会被它丰富的数据类型搞得眼花缭乱,但其实只要抓住 str(字符串)、list(列表)、tuple(元组)、dict(字典) 和 set(集合) 这五种核心类型,就能应对绝大多数日常编程场景。
本文从零开始,用最简单的语言和最直观的示例逐一讲解这五种数据类型的特点、常用操作和典型使用场景,最后还会给出一张汇总对比表,帮你快速记忆和理解。
1. str(字符串)—— 文本信息的基础
定义:字符串是由单引号、双引号或三引号包裹的字符序列,不可变。
name = "Alice"
sentence = 'Hello, world!'
big_text = """这里可以
写多行文本"""
常用操作:
- 拼接:
"Hello " + "World"→"Hello World" - 重复:
"Hi" * 3→"HiHiHi" - 索引与切片:
s = "Python"; s[0]得到'P',s[1:4]得到'yth' - 常用方法:
upper()、lower()、strip()、split()、replace()
注意:字符串一旦创建就不能原地修改,每次修改本质上都会生成一个新的字符串对象。
2. list(列表)—— 最灵活的容器
定义:列表是一个有序、可变的元素集合,用方括号 [] 表示,可以存放任意类型的对象。
fruits = ["apple", "banana", "cherry"]
mixed = [1, "hello", 3.14, True]
常用操作:
- 索引与切片:语法和字符串一样
- 增:
append()、insert(index, item)、extend(iterable) - 删:
remove(item)、pop(index)、del list[index] - 改:直接通过索引赋值,如
fruits[0] = "pear" - 查:
in运算符判断元素是否存在
特点:可变,支持动态增删改,是使用频率最高的数据类型之一。
3. tuple(元组)—— 不可变序列
定义:元组是一个有序、不可变的元素集合,用圆括号 () 表示(甚至可以省略括号)。
point = (3, 5)
colors = "red", "green", "blue" # 省略括号也是元组
与列表的区别:
- 元组创建后不能添加、删除或修改元素(保护数据不被意外篡改)
- 因为不可变,元组可以作为字典的键,列表则不行
常用操作:索引、切片、in 判断、len()。虽然不能修改内部元素,但可以整个替换元组变量。
使用场景:函数返回多个值、不可变常量集合、字典的键等。
4. dict(字典)—— 键值对映射
定义:字典是一个无序、可变的键值对集合,用花括号 {} 表示,键必须不可变且唯一。
student = {
"name": "小明",
"age": 20,
"courses": ["数学", "英语"]
}
常用操作:
- 增/改:
student["city"] = "北京",或使用update() - 删:
del student["age"]或pop("age") - 查:
student["name"](键不存在会报错),更安全的student.get("name", 默认值) - 遍历:
for key, value in student.items():
特点:查找速度极快(基于哈希),非常适合按名称存储和检索数据。
5. set(集合)—— 去重与集合运算
定义:集合是一个无序、不重复的元素集合,用花括号 {} 或 set() 创建(空集合只能用 set(),因为 {} 创建的是空字典)。
numbers = {1, 2, 3, 3, 4}
print(numbers) # 输出 {1, 2, 3, 4},自动去重
常用操作:
- 增:
add(item) - 删:
remove(item)(元素不存在会报错),discard(item)(更安全) - 集合运算:
a & b交集,a | b并集,a - b差集 - 去重:
list(set(重复列表))但是顺序会丢失
注意:集合元素必须是可哈希的(不可变)类型,因此不能包含列表或字典。
六大特性汇总对比
为了让新手更容易记忆,我们把这五种数据类型的关键特性整理成一张表格:
| 数据类型 | 有序? | 可变? | 元素可重复? | 常见创建方式 | 典型场景 |
|---|---|---|---|---|---|
| str | 有序 | 不可变 | 是 | ' ' 或 " " | 文本处理、格式化输出 |
| list | 有序 | 可变 | 是 | [] | 动态数组、数据收集、栈/队列 |
| tuple | 有序 | 不可变 | 是 | () | 固定数据、函数多返回值、字典键 |
| dict | 3.7+ 按插入序 | 可变 | 键不重复,值可重复 | {key: value} | 映射关系、配置、JSON 数据处理 |
| set | 无序 | 可变 | 否 | set() 或 {} | 去重、成员关系测试、集合运算 |
(注:Python 3.7 开始字典保持插入顺序,但通常仍按逻辑无序理解即可。)
新手常见误区提醒
- 硬记可变不可变:str、tuple 不可变;list、dict、set 可变。可变对象参数传递时要小心副作用。
- 空集合陷阱:
empty_set = set()是对的,empty_set = {}会创建一个空字典。 - 列表与元组的混用:如果想保护数据不被改动,优先用元组;如果需要频繁增删元素,用列表。
- 字典键的坑:字典的 key 只能是不可变类型(如 str、int、tuple),不能是 list、dict、set。
- 集合去重会丢序:set 是无序的,
list(set([3,1,2]))得到的顺序可能是[1,2,3],如果需要保持原顺序,要使用其他方法。
总结
字符串、列表、元组、字典、集合是 Python 中最基础、最常用的五种数据类型。理解它们的「有序/无序」「可变/不可变」「元素是否可重复」三大属性,就掌握了 80% 的日常使用场景。
建议新手多动手写代码,针对每种类型都练习一下增删改查操作,再配合本文的对比表,很快就能形成自己的“类型直觉”。
如果本文对你有帮助,欢迎点赞收藏,也欢迎在评论区交流你遇到的坑和心得。
更多推荐
所有评论(0)