使用内置类型list实现,主要有如下操作:
array = []
array.append(1)
length = len(array)
if not array:
# 列表为空
print("array is empty")
queue模块提供了一个Queue类,实现了线程安全的队列,主要有如下操作:
from queue import Queue
my_queue = Queue()
# 出队
my_queue.put(1)
# 入队
removed_element = my_queue.get()
is_empty = Queue.empty()
collections模块提供了deque类,实现了双端队列,允许从队列的两端进行插入和删除操作。
from collections import deque
my_deque = deque()
# 在队列的右侧插入元素
my_deque.append(1)
# 在队列的左侧插入元素
my_deque.appendleft(0)
# 从队列的右侧删除元素
right_element = my_deque.pop()
# 从队列的左侧删除元素
left_element = my_deque.popleft()
使用list实现,主要操作如下:
my_stack = []
my_stack.append(1)
# 从栈顶删除元素
removed_element = my_stack.pop()
# 获得栈顶元素
top = my_stack[-1]
heapq模块实现了最小堆,可用来充当优先队列,主要操作如下:
import heapq
# 创建一个空的优先队列
my_priority_queue = []
# 添加元素到优先队列
heapq.heappush(my_priority_queue, 3)
heapq.heappush(my_priority_queue, 1)
heapq.heappush(my_priority_queue, 2)
# 从优先队列中弹出最小元素
min_element = heapq.heappop(my_priority_queue)
# 访问最小的元素,但不弹出
print(my_priority_queue[0])
# 将list x转换成堆
x = [4, 2, 1, 3]
heapq.heapify(x)
如果需要使用最大堆,在添加元素和弹出元素的时候,将元素取负即可。
在Python中,内置的set类型是一种无序且不重复的数据集合,底层实现方式为哈希表,主要操作如下:
# 创建一个空集合
my_set = set()
# 创建一个包含元素的集合
my_set = {1, 2, 3, 4, 5}
# 添加元素到集合
my_set.add(6)
# 从集合中移除元素
my_set.remove(2)
# 检查元素是否在集合中
is_present = 3 in my_set
# 获取集合的长度(元素个数)
size = len(my_set)
# 进行集合的交集、并集
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
intersection = set1 & set2 # 交集
union = set1 | set2 # 并集
使用字典实现,底层实现方式为哈希表,主要操作如下:
# 创建一个空的map
my_map = {}
# 创建一个包含键值对的map
my_map = {'apple': 1, 'banana': 2, 'orange': 3}
# 添加键值对到map
my_map['grape'] = 4
# 获取map中的值
apple_value = my_map['apple']
# 检查键是否存在于map中
is_present = 'banana' in my_map
# 获取map的键的列表和值的列表
keys = list(my_map.keys())
values = list(my_map.values())
# 遍历map中的键值对
for key, value in my_map.items():
print(key, value)
# 删除map中的键值对
del my_map['orange']
# 清空map
my_map.clear()