今天我们将深入探讨 Python 中常用的数据结构,帮助你从基础到精通。每种数据结构都有其独特的特点和适用场景,通过实际代码示例和生活中的比喻,让你更容易理解这些概念。
学习数据结构的三个阶段
1、掌握基本用法:使用这些数据结构解决一些基本问题。
2、应用场景选择:知道在何种场景下选用哪种数据结构。
3、深入理解实现:了解内置数据结构的源码实现,并将其与相关算法知识联系起来,提升编程能力。
下面逐一介绍这 10 种常用的数据结构。
1. List (列表)
基本用法
list 是 Python 中最基本的数据结构,允许存储多个值且支持动态大小。
# 创建一个列表
fruits = ['apple', 'banana', 'cherry']
print(fruits[0]) # 输出:apple
# 添加元素
fruits.append('orange')
print(fruits) # 输出:['apple', 'banana', 'cherry', 'orange']
# 修改元素
fruits[1] = 'kiwi'
print(fruits) # 输出:['apple', 'kiwi', 'cherry', 'orange']
# 删除元素
fruits.remove('cherry')
print(fruits) # 输出:['apple', 'kiwi', 'orange']
使用场景
-
适合频繁查询和修改:例如,在需要按索引访问元素时,list 的性能优越。
-
不适合频繁插入和删除:特别是在开头插入或删除时,因为这样会导致后面的元素都要移动。
实现原理
list 底层是动态数组,初始状态下无需指定长度。当插入元素超过初始容量时,会进行扩容,通常是以两倍的方式增加大小。删除操作尤其在列表开头执行时,由于涉及大量元素的位移,因此时间复杂度为 O(n)。
2. Tuple (元组)
基本用法
tuple 是一种不可变的序列,一旦创建便无法修改。
# 创建一个元组
coordinates = (10, 20)
print(coordinates[0]) # 输出:10
# 元组解包
x, y = coordinates
print(x, y) # 输出:10 20
使用场景
-
确保数据不被修改:如果确定对象不会被修改(比如坐标),可以使用元组。
-
节省内存:由于元组的不可变性,Python 在内存管理上更高效。