玩转 Python 基本数据类型:列表、元组、range、集合与字典全解析

· 约 3 分钟 ·
本文目录(21 节)

前言

在学习完字符串与数字类型之后,Python的「容器类型」是你通往进阶之路的必经之门。今天我们一起来系统梳理和掌握 列表(list)、元组(tuple)、range对象、集合(set/frozenset)以及字典(dict) 的核心用法和差异。


一、列表(list):灵活可变的万金油

列表是最常用的数据结构之一。它是一个有序、可变、可迭代的序列,适合存储同类项目集合。

🌟 核心特性:

  • ✅ 可变(支持增删改)
  • ✅ 有序(支持索引、切片)
  • ✅ 支持存放任意类型
  • ✅ 自动扩容缩容

🔧 创建方式(4种):

lst1 = [1, 2, 3]  # 字面量
lst2 = list("abc")  # 类型转换
lst3 = [x ** 2 for x in range(3)]  # 推导式
lst4 = list(range(3))  # 构造器

📚 常用操作:

操作方法示例
末尾添加append()lst.append(4)
插入元素insert(index, val)lst.insert(1, 'a')
合并列表extend()lst.extend([5,6])
删除元素remove() / pop()lst.remove(2) or pop(0)
排序sort()lst.sort(key=len, reverse=True)
遍历for i in lst:

二、元组(tuple):一旦定型不可更改

元组不可变,指的是它保存的元素引用不能被替换,并不保证元素本身不可变。例如元组里放一个列表,列表仍可追加元素。这也解释了为什么不是每个元组都能作为字典键:还要看里面的元素是否可哈希。

元组是不可变的有序序列,通常用于表示一个不可更改的数据集。

🌟 核心特性:

  • ❌ 不可变(不支持增删改)
  • ✅ 有序(支持索引、切片)
  • ✅ 支持解包
  • ✅ 可作为 dict 的 key(可哈希)

🛠 创建方式:

t1 = (1, 2, 3)
t2 = (1,)  # 单元素必须加逗号
t3 = tuple("abc")

🎯 高级用法:解包 & 命名元组

x, y = (10, 20)  # 基础解包
*a, b = [1, 2, 3, 4]  # 星号收集

命名元组(namedtuple)让你像对象一样访问元组字段:

from collections import namedtuple
Person = namedtuple("Person", ["name", "age"])
p = Person("Alice", 30)
print(p.name)  # 输出 Alice

三、range 对象:高效生成整数序列

range() 用于生成等差整数序列,常用于循环中。

🔧 三种写法:

range(5)         # 0 到 4
range(1, 5)      # 1 到 4
range(1, 10, 2)  # 步长为 2

🚀 特点:

  • ✅ 不可变
  • ✅ 惰性求值,节省内存
  • ✅ 支持索引、切片

四、集合(set & frozenset):无重复、无序的数据集

集合是 Python 中的无序不重复元素集合,常用于去重、集合运算等。

✅ set:可变集合

s = {1, 2, 3}
s.add(4)
s.remove(1)

支持交集(&)、并集(|)、差集(-)等集合运算。

❄️ frozenset:不可变集合

fs = frozenset([1, 2, 3])

适合用于需要不可变集合的场景,比如作为 dict 的键。


五、字典(dict):Python 最强大的数据结构

字典是一种键值对映射结构,是非常强大且灵活的容器类型。

🔑 创建方式:

d1 = {"name": "Alice", "age": 25}
d2 = dict(name="Bob", age=30)
d3 = dict(zip(["a", "b"], [1, 2]))

✨ 常用操作:

操作示例
增 / 改d["key"] = value
删除pop("key") / del d["key"]
获取值d.get("key", default)
遍历for k, v in d.items():
视图对象keys(), values(), items()

📌 延伸理解:赋值与存储是一回事

当我们写下如下代码:

hashmap[num] = index

这不仅是”让 num 对应的值等于 index”,更是将这个键值对存入字典的操作。

它相当于:

# 如果 num 是 7,index 是 3:
hashmap = {7: 3}

也就是说:Python 字典的 [] 赋值语句(dict[key] = value)是一个同时实现”添加或更新”的操作。

因此:

  • 它”等于索引”是值的语义
  • 它”被存入字典”是结构的行为

这种写法在算法题(如 twoSum)中非常常见,也是字典作为映射结构的精髓所在。


🧠 总结:五类数据类型一览对比

特性listtuplerangesetdict
可变✅❌❌✅✅
有序✅✅✅❌✅(3.7+)
可迭代✅✅✅✅✅
可哈希❌✅✅❌❌
典型用途存放集合多值封装循环序列去重映射键值

写在最后

掌握好这些基本数据类型,是深入学习 Python 的起点。它们不仅是日常开发的基石,也在算法、数据处理、Web 开发、机器学习等场景中频繁出现。

🧪 建议大家动手多写、多调试,多用 type()、id()、dir() 等工具感受每种类型的行为,才能真正做到灵活运用!


如果你觉得这篇文章对你有帮助,欢迎点赞 ⭐、收藏 📁、评论 💬~

你还想看我写哪一部分的 Python 知识?欢迎留言告诉我!


💬 评论

这套方案在哪一步卡住了?也欢迎补充你的实现方式或踩坑经验。

正在连接评论服务,首次访问可能需要几秒…