Python中主要数据结构的使用

数组

使用内置类型list实现,主要有如下操作:

array = []
array.append(1)
length = len(array)
if not array:
	# 列表为空
	print("array is empty")

队列/双端队列 deque

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()
# 获取队列的长度
size = len(my_deque)

栈 stack

使用list实现,主要操作如下:

my_stack = []
my_stack.append(1)
# 从栈顶删除元素
removed_element = my_stack.pop()
# 获得栈顶元素
top = my_stack[-1]

优先队列 priority_queue

heapq模块实现了最小堆,可用来充当优先队列,主要操作如下:

import heapq
# 创建一个空的优先队列
heap = []
# 添加元素到优先队列
heapq.heappush(heap, 3)
heapq.heappush(heap, 1)
heapq.heappush(heap, 2)
# 从优先队列中弹出最小元素
min_element = heapq.heappop(heap)
# 访问最小的元素,但不弹出
print(heap[0])
# 将list x转换成堆
x = [4, 2, 1, 3]
heapq.heapify(x)

如果需要使用最大堆,在添加元素和弹出元素的时候,将元素取负即可。

集合 set

在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

使用字典实现,底层实现方式为哈希表,主要操作如下:

from collections import defaultdict
# 创建一个空的map,默认值为0
my_map = defaultdict(int)
# 创建一个包含键值对的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()
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值