• Python中主要数据结构的使用


    数组

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

    array = []
    array.append(1)
    length = len(array)
    if not array:
    	# 列表为空
    	print("array is empty")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    队列 queue

    queue模块提供了一个Queue类,实现了线程安全的队列,主要有如下操作:

    from queue import Queue
    my_queue = Queue()
    # 出队
    my_queue.put(1)
    # 入队
    removed_element = my_queue.get()
    is_empty = Queue.empty()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    双端队列 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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    栈 stack

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

    my_stack = []
    my_stack.append(1)
    # 从栈顶删除元素
    removed_element = my_stack.pop()
    # 获得栈顶元素
    top = my_stack[-1]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    优先队列 priority_queue

    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

    集合 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  # 并集
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    映射/字典 map

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

    # 创建一个空的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()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    Web3:数字身份与隐私保护的新篇章
    一些关于字节序处理的一些经验
    BigDecimal保留两位小数失败问题
    简单聊聊羊了个羊
    【场景化解决方案】连接“云上管车”与道闸系统,企业用车流程更高效
    计算二叉树的最大宽度
    LeetCode只出现一次的数字
    项目实战:中央控制器实现(2)-优化Controller,将共性动作抽取到中央控制器
    袁庭新ES系列12节 | Elasticsearch高级查询操作
    React造轮子项目工程搭建经历
  • 原文地址:https://blog.csdn.net/qq_42890800/article/details/137260441