Python3 数据结构
Python 提供了丰富的内置数据结构,可以帮助我们有效地存储、操作和访问数据。常用的数据结构包括:列表(List)、元组(Tuple)、字典(Dictionary)、集合(Set)。这些数据结构都有自己的特点和适用场景。接下来详细介绍 Python 中的常用数据结构。
1. 列表(List)
概述
- 列表是 Python 中最常见的数据结构之一,它是一个有序的可变集合,可以包含重复的元素。
- 列表是动态的,可以在创建后进行修改、删除、添加元素。
特点
- 有序:元素的顺序是固定的。
- 可变:可以对列表中的元素进行增、删、改。
- 可以包含不同类型的元素。
常见操作
# 创建列表
my_list = [1, 2, 3, 4]
# 访问元素
print(my_list[0]) # 输出 1
# 修改元素
my_list[1] = 10
# 添加元素
my_list.append(5)
# 删除元素
my_list.remove(3) # 删除值为 3 的元素
# 列表切片
print(my_list[1:3]) # 输出 [10, 4]
# 列表长度
print(len(my_list)) # 输出 4
2. 元组(Tuple)
概述
- 元组是 Python 中的一个有序集合,与列表类似,但它是不可变的(immutable)。一旦创建,它的内容无法修改。
- 元组通常用于存储一些不希望更改的数据。
特点
- 有序:元素的顺序是固定的。
- 不可变:元组中的元素不可修改。
- 可以包含不同类型的元素。
常见操作
# 创建元组
my_tuple = (1, 2, 3, 4)
# 访问元素
print(my_tuple[0]) # 输出 1
# 元组切片
print(my_tuple[1:3]) # 输出 (2, 3)
# 元组长度
print(len(my_tuple)) # 输出 4
3. 字典(Dictionary)
概述
- 字典是一种无序的键值对(key-value)集合。它是 Python 中唯一的映射类型。
- 字典中的元素是以键值对的形式存储,键是唯一的,值可以是任何类型。
特点
- 无序:字典中的元素没有顺序。
- 键值对:每个元素由键和值组成。
- 键是唯一的:同一个字典内不允许有重复的键。
常见操作
# 创建字典
my_dict = {'name': 'Alice', 'age': 25, 'city': 'New York'}
# 访问元素
print(my_dict['name']) # 输出 Alice
# 修改元素
my_dict['age'] = 26
# 添加元素
my_dict['job'] = 'Engineer'
# 删除元素
del my_dict['city']
# 获取所有键或值
keys = my_dict.keys() # 获取字典的所有键
values = my_dict.values() # 获取字典的所有值
print(keys) # 输出 dict_keys(['name', 'age', 'job'])
print(values) # 输出 dict_values(['Alice', 26, 'Engineer'])
4. 集合(Set)
概述
- 集合是 Python 中的一个无序、不重复的元素集合。
- 集合用于存储唯一的元素,常常用于去重和集合操作(如交集、并集、差集等)。
特点
- 无序:集合中的元素没有顺序。
- 唯一:集合中的元素是唯一的,不允许重复。
- 可变:集合本身是可变的,但集合中的元素必须是不可变的。
常见操作
# 创建集合
my_set = {1, 2, 3, 4, 5}
# 添加元素
my_set.add(6)
# 删除元素
my_set.remove(4)
# 集合运算
set1 = {1, 2, 3}
set2 = {3, 4, 5}
# 交集
print(set1 & set2) # 输出 {3}
# 并集
print(set1 | set2) # 输出 {1, 2, 3, 4, 5}
# 差集
print(set1 - set2) # 输出 {1, 2}
5. 队列(Queue)
概述
- 队列是一种遵循先进先出(FIFO,First In First Out)原则的线性数据结构。
- Python 中的
queue模块提供了实现队列的功能。
常见操作
from collections import deque
# 创建队列
queue = deque()
# 入队(添加元素)
queue.append('a')
queue.append('b')
# 出队(移除元素)
print(queue.popleft()) # 输出 'a'
# 查看队列头部元素
print(queue[0]) # 输出 'b'
6. 栈(Stack)
概述
- 栈是一种遵循后进先出(LIFO,Last In First Out)原则的线性数据结构。
- Python 中可以通过列表模拟栈,使用
append()添加元素,使用pop()移除元素。
常见操作
# 创建栈
stack = []
# 入栈(添加元素)
stack.append(1)
stack.append(2)
# 出栈(移除元素)
print(stack.pop()) # 输出 2
# 查看栈顶元素
print(stack[-1]) # 输出 1
7. 双端队列(Deque)
概述
- 双端队列(Deque,Double-ended Queue)是可以从两端插入和删除元素的队列。
- Python 中的
collections.deque提供了双端队列的实现。
常见操作
from collections import deque
# 创建双端队列
dq = deque()
# 从右端添加元素
dq.append(1)
dq.append(2)
# 从左端添加元素
dq.appendleft(0)
# 从右端删除元素
dq.pop() # 输出 2
# 从左端删除元素
dq.popleft() # 输出 0
总结
Python 中的常见数据结构包括:
- 列表(List):有序、可变,可以存储多种类型的数据。
- 元组(Tuple):有序、不可变,适合存储不需要修改的数据。
- 字典(Dictionary):无序的键值对集合,常用于存储关联数据。
- 集合(Set):无序、不重复的元素集合,适合去重和集合运算。
- 队列(Queue):遵循先进先出(FIFO)原则的线性数据结构。
- 栈(Stack):遵循后进先出(LIFO)原则的线性数据结构。
- 双端队列(Deque):支持从两端插入和删除元素的队列。
这些数据结构为 Python 编程提供了灵活、高效的工具,可以根据具体需求选择合适的数据结构。更多详细内容请关注其他相关文章!