前言

刚接触 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有序不可变()固定数据、函数多返回值、字典键
dict3.7+ 按插入序可变键不重复,值可重复{key: value}映射关系、配置、JSON 数据处理
set无序可变set() 或 {}去重、成员关系测试、集合运算

(注:Python 3.7 开始字典保持插入顺序,但通常仍按逻辑无序理解即可。)

新手常见误区提醒

  1. 硬记可变不可变:str、tuple 不可变;list、dict、set 可变。可变对象参数传递时要小心副作用。
  2. 空集合陷阱empty_set = set() 是对的,empty_set = {} 会创建一个空字典。
  3. 列表与元组的混用:如果想保护数据不被改动,优先用元组;如果需要频繁增删元素,用列表。
  4. 字典键的坑:字典的 key 只能是不可变类型(如 str、int、tuple),不能是 list、dict、set。
  5. 集合去重会丢序:set 是无序的,list(set([3,1,2])) 得到的顺序可能是 [1,2,3],如果需要保持原顺序,要使用其他方法。

总结

字符串、列表、元组、字典、集合是 Python 中最基础、最常用的五种数据类型。理解它们的「有序/无序」「可变/不可变」「元素是否可重复」三大属性,就掌握了 80% 的日常使用场景。

建议新手多动手写代码,针对每种类型都练习一下增删改查操作,再配合本文的对比表,很快就能形成自己的“类型直觉”。

如果本文对你有帮助,欢迎点赞收藏,也欢迎在评论区交流你遇到的坑和心得。

更多推荐