Python 中的数据结构介绍
Python 是一种功能强大的编程语言,它内置了多种数据结构,以便用户能够方便、高效地存储、处理和访问数据。数据结构是组织和存储数据的方式,不同的数据结构适用于不同的应用场景。掌握 Python 中的基本数据结构,可以使代码更加简洁高效。
本文将对 Python 中常用的数据结构进行介绍,涵盖列表(List)、元组(Tuple)、集合(Set)、字典(Dictionary)以及队列(Queue)和栈(Stack)等常见数据结构。
1. 列表(List)
列表是 Python 中最常用的数据结构之一,它是一个有序的、可变的元素集合。列表可以包含任意类型的元素,可以包含重复的元素,且支持通过索引访问元素。
创建列表:
my_list = [1, 2, 3, 4, 5]
mixed_list = [1, "Python", 3.14, True]
常见操作:
-
访问元素:使用索引访问列表中的元素(从 0 开始)。
print(my_list[0]) # 输出: 1
-
修改元素:可以通过索引修改列表中的元素。
my_list[0] = 100 print(my_list) # 输出: [100, 2, 3, 4, 5]
-
添加元素:使用
append()
向列表添加单个元素,使用extend()
向列表添加多个元素。my_list.append(6) # 添加一个元素 my_list.extend([7, 8]) # 添加多个元素 print(my_list) # 输出: [100, 2, 3, 4, 5, 6, 7, 8]
-
删除元素:使用
remove()
删除指定元素,使用pop()
删除并返回指定索引位置的元素。my_list.remove(100) # 删除值为100的元素 my_list.pop(2) # 删除索引为2的元素并返回 print(my_list) # 输出: [2, 3, 4, 5, 6, 7, 8]
2. 元组(Tuple)
元组与列表类似,都是有序的元素集合,但是元组是不可变的。这意味着一旦创建了元组,不能修改其中的元素。元组通常用于存储不需要修改的数据。
创建元组:
my_tuple = (1, 2, 3, 4, 5)
mixed_tuple = (1, "Python", 3.14, True)
常见操作:
-
访问元素:与列表类似,使用索引访问元组中的元素。
print(my_tuple[0]) # 输出: 1
-
无法修改:元组一旦创建,就不能修改其中的元素。
# 错误示例:尝试修改元组元素会报错 # my_tuple[0] = 100 # 会抛出 TypeError
3. 集合(Set)
集合是一个无序且不包含重复元素的数据结构。集合通常用于去重操作或测试成员资格。它支持常见的集合运算,如并集、交集和差集。
创建集合:
my_set = {1, 2, 3, 4}
empty_set = set() # 创建空集合
常见操作:
-
添加元素:使用
add()
向集合添加元素。my_set.add(5) print(my_set) # 输出: {1, 2, 3, 4, 5}
-
删除元素:使用
remove()
删除指定元素。my_set.remove(3) print(my_set) # 输出: {1, 2, 4, 5}
-
集合运算:支持并集、交集、差集等集合运算。
set1 = {1, 2, 3} set2 = {3, 4, 5}# 并集 print(set1 | set2) # 输出: {1, 2, 3, 4, 5}# 交集 print(set1 & set2) # 输出: {3}# 差集 print(set1 - set2) # 输出: {1, 2}
4. 字典(Dictionary)
字典是一种无序的键值对集合,它允许通过键来快速查找对应的值。字典中的键是唯一的,但值可以重复。字典广泛用于存储需要快速访问的数据。
创建字典:
my_dict = {"name": "Alice", "age": 25, "city": "New York"}
常见操作:
-
访问元素:通过键访问字典中的值。
print(my_dict["name"]) # 输出: Alice
-
修改元素:通过键修改字典中的值。
my_dict["age"] = 26 print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York'}
-
添加元素:向字典添加新的键值对。
my_dict["job"] = "Engineer" print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'city': 'New York', 'job': 'Engineer'}
-
删除元素:使用
del
删除指定的键值对。del my_dict["city"] print(my_dict) # 输出: {'name': 'Alice', 'age': 26, 'job': 'Engineer'}
5. 队列(Queue)和栈(Stack)
队列和栈是两种常见的线性数据结构。它们的主要区别在于数据元素的插入和删除顺序。
-
栈(Stack):栈遵循“后进先出”(LIFO,Last In First Out)的原则,插入的元素在栈顶,删除元素也是从栈顶进行的。
可以使用 Python 的
list
来实现栈:stack = [] stack.append(1) # 入栈 stack.append(2) stack.pop() # 出栈,返回 2 print(stack) # 输出: [1]
-
队列(Queue):队列遵循“先进先出”(FIFO,First In First Out)的原则,插入的元素在队尾,删除元素从队头进行。可以使用
collections.deque
来高效实现队列。from collections import deque queue = deque([1, 2, 3]) queue.append(4) # 入队 queue.popleft() # 出队,返回 1 print(queue) # 输出: deque([2, 3, 4])
6. 总结
Python 提供了多种数据结构,每种数据结构在不同的场景下都有其独特的优势。掌握这些基础数据结构,有助于我们编写更加高效和易维护的代码。
-
列表(List):有序、可变、允许重复元素,适合存储有序数据。
-
元组(Tuple):有序、不可变、允许重复元素,适合存储不需要修改的数据。
-
集合(Set):无序、唯一,适合去重和集合运算。
-
字典(Dictionary):无序、键值对,适合存储需要快速查找的数据。
-
队列(Queue)和栈(Stack):适用于需要按特定顺序处理数据的场景。