python中队列的实现方法(代码示例)
本篇文章给大家带来的内容是关于python中队列的实现方法(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
对于python来说,要实现一个队列的类根据已经有的方法,是很简单的。既然队列要求一端插入,一端删除。明显,python就有这两个工具,对于队列的尾部删除用pop(0)就可以做到,头部插入,用append就可以做到。从这方面来说确实很简单,但总是要找到最优解不是吗?所以我们不用pop方法,因为对于python内部实现而言,这个方法的复杂度是O(n),为什么呢?我们删除列表的首位列表的全部元素都会往前移,这是python要保持列表的完整性
我们用循环的顺序表来实现队列。
具体思路如下:
我们从列表前面开始删除的时候,头部指针跟着元素区的起点,也就是头指针是不断随着删除向后面变化的,那么前面空着的节点,我们不浪费,当尾部指针随着加入元素走到列表最后一个位置的时候,尾部指针从新走向列表的第一个节点(空的节点),至于停止,当我们的头部指针和尾部指针汇合的时候,说明这个时候才是整个固定列表全部用完的时候,这里我们还定义了一个扩大队列可存储空间的方法,在内部调用的,当队列满时,我们就自动调用这个内部方法,扩大队列空间。
实现:
分析一下,我们可以知道
可以定义一个头指针,用于指定元素区的开始下标,self._head;
定义一个变量,用于储存元素区的长度,self._num
一个用于保存整个列表长度的变量,self._len
当然还有队列所在的列表变量, self._list
定义了几个变量之后我们来看一下几个判断:
当self._num = self._len时,说明这时候队列满了
当self._num = 0时,队列是空的
一个队列支持的操作,有几个:
建立空的队列
判断队列是否为空
取队列首位的值
出队操作
入队操作
我们还定义了一个增加列表长度的内部方法
具体实现如下:
# _*_ coding: utf-8 _*_ class OverFlowError(ValueError): pass class Queue: def __init__(self, init_len=0): self._len = init_len self._list = [0] * init_len self._num = 0 # 计数元素 self._head = 0 # 头指针 def is_empty(self): return self._num == 0 def peek(self): if self._num == 0: raise OverFlowError("取队列首位值,但队列为空") return self._list[self._head] def enqueue(self, elem): if self._num = self._len: self._extend() self._list[(self._head + self._num) % self._len] = elem self._num += 1 def dequeue(self): if self._num == 0: raise OverFlowError("队列首位出队列,但队列为空") e = self._list[self._head] self._head = (self._head + 1) % self._len self._num -= 1 return e def _extend(self): new_len = self._len * 2 new_list = [0] * new_len i = 0 p = self._head while not p == (self._head + self._num) % self._len: new_list[i] = self._list[p] i += 1 self._len = new_len self._list = new_list self._head = 0
思路很重要,怎么实现的反而不那么重要,你先实现,然后再看我的效果更好!
以上是python中队列的实现方法(代码示例)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

在 Sublime Text 中运行 Python 代码,需先安装 Python 插件,再创建 .py 文件并编写代码,最后按 Ctrl B 运行代码,输出会在控制台中显示。

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

在 Visual Studio Code(VSCode)中编写代码简单易行,只需安装 VSCode、创建项目、选择语言、创建文件、编写代码、保存并运行即可。VSCode 的优点包括跨平台、免费开源、强大功能、扩展丰富,以及轻量快速。

在 Notepad 中运行 Python 代码需要安装 Python 可执行文件和 NppExec 插件。安装 Python 并为其添加 PATH 后,在 NppExec 插件中配置命令为“python”、参数为“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通过快捷键“F6”运行 Python 代码。
