【Python】数据结构有Python版吗?

devtools/2025/3/25 1:05:28/

李升伟 整理

数据结构可以用Python实现。Python提供了多种内置数据结构,如列表(list)、元组(tuple)、集合(set)、字典(dict)等。此外,Python的标准库还包含一些高级数据结构,如collections模块中的dequedefaultdictCounter等。

以下是一些常见数据结构及其Python实现示例:

1. 数组/列表(List):

Python的列表类似于动态数组,可以存储不同类型的元素。

python">my_list = [1, 2, 3, 4, 5]

2. 栈(Stack):

可以使用列表来实现栈,遵循后进先出(LIFO)原则。

python">stack = []
stack.append(1)  # 入栈
stack.append(2)
stack.pop()      # 出栈,返回2

3. 队列(Queue):
可以使用collections.deque来实现队列,遵循先进先出(FIFO)原则。

python">from collections import deque
queue = deque()
queue.append(1)  # 入队
queue.append(2)
queue.popleft()  # 出队,返回1

4. 链表(Linked List):

可以自定义类来实现链表。

python">class Node:def __init__(self, data):self.data = dataself.next = Noneclass LinkedList:def __init__(self):self.head = Nonedef append(self, data):new_node = Node(data)if not self.head:self.head = new_nodereturnlast_node = self.headwhile last_node.next:last_node = last_node.nextlast_node.next = new_nodedef print_list(self):current = self.headwhile current:print(current.data, end=" -> ")current = current.nextprint("None")ll = LinkedList()
ll.append(1)
ll.append(2)
ll.print_list()  # 输出: 1 -> 2 -> None

5. 树(Tree):

可以自定义类来实现树结构。

python">class TreeNode:def __init__(self, data):self.data = dataself.children = []def add_child(self, child):self.children.append(child)root = TreeNode("A")
child1 = TreeNode("B")
child2 = TreeNode("C")
root.add_child(child1)
root.add_child(child2)

6. 图(Graph):

可以使用字典来实现图结构。

python">graph = {'A': ['B', 'C'],'B': ['D', 'E'],'C': ['F'],'D': [],'E': ['F'],'F': []
}

7. 堆(Heap):

可以使用heapq模块来实现堆。

python">import heapqheap = []
heapq.heappush(heap, 3)
heapq.heappush(heap, 1)
heapq.heappush(heap, 2)
heapq.heappop(heap)  # 返回1

8. 哈希表(Hash Table):

Python的字典(dict)就是基于哈希表实现的。

python">hash_table = {}
hash_table['key1'] = 'value1'
hash_table['key2'] = 'value2'
print(hash_table['key1'])  # 输出: value1

这些是Python中实现常见数据结构的一些基本示例。根据具体需求,你可以进一步扩展和优化这些实现。
(来自deepseek问答。)


http://www.ppmy.cn/devtools/169231.html

相关文章

【USTC 计算机网络】第二章:应用层 - P2P、CDN

本文首先介绍了网络架构中的另一大模式:P2P,主要介绍了结构化 P2P 与非结构化 P2P,以及如何通过集中式目录或查询洪泛方法查找资源,接着介绍了流媒体传输技术 DASH 与内容分发网络 CDN,通过 CDN 能够实现快速、稳定、安…

【redis】在 Spring中操作 Redis

文章目录 基础设置依赖StringRedisTemplate库的封装 运行StringList删库 SetHashZset 基础设置 依赖 需要选择这个依赖 StringRedisTemplate // 后续 redis 测试的各种方法,都通过这个 Controller 提供的 http 接口来触发 RestController public class MyC…

3.21学习总结 Java字符串+Static关键字

this关键字: 作用:区别局部变量和成员变量 本质:所在方法调用者的地址值 就近原则 API StringBulider 使用场景:1.字符串的拼接,2.字符串的反转。 练习题: 链式编程: 在调用一个方法的时候…

【Bluebell】项目总结:基于 golang 的前后端分离 web 项目实战

文章目录 Bluebell 项目总结:基于 golang 的前后端分离 web 项目实战项目入口:先从 main 函数入手准备工作:加载配置、初始化日志、初始化数据库等加载配置初始化日志初始化 MySQL 连接初始化 Redis 连接初始化雪花算法初始化 GIN 框架内置的…

解释什么是受控组件和非受控组件

在 React 中,表单元素的管理和处理是一个重要的主题。理解受控组件和非受控组件之间的区别,对构建高效、可维护的用户界面至关重要。本文将深入探讨这两种组件的定义、优缺点、使用场景以及最佳实践。 1. 什么是受控组件? 1.1 定义 受控组…

无服务器架构将淘汰运维?2025年云计算形态预测

无服务器架构将淘汰运维?2025年云计算形态预测 随着云计算技术的快速演进,**无服务器架构(Serverless)**正逐步改变企业的开发与运维模式。无服务器架构是否会彻底淘汰传统运维?2025年的云计算格局将如何演变&#xf…

HTML5前端第七章节

本章节为前端网页页面实战,包含我们之前所学的全部内容 一.创建项目目录 1.网站根目录: 网站根目录指的是存放网站的第一层文件夹,内部包含当前网站的所有素材,包含HTML,CSS,需要的素材图片等等 2.根目录…

双核锁步技术在汽车芯片软错误防护中的应用详解

摘要 本文深入探讨了双核锁步技术在保障汽车芯片安全性中的应用。文章首先分析了国产车规芯片在高安全可靠领域面临的软错误难点及攻克方向,然后详细介绍了双核锁步技术的基本原理及其在汽车芯片防软错误的重要性。通过对比国内外多家厂商的芯片技术,分析…