人工智能

Python学习系列之Deque双端队列及应用案例

字号+作者:益华科技来源:IT科技类资讯2025-11-05 14:08:59我要评论(0)

一.双端队列(Deque)概念:deque(也称为双端队列)是与队列类似的项的有序集合。它有两个端部,首部和尾部,并且项在集合中保持不变。特性:deque 特殊之处在于添加和删除项是非限制性的。可以在

  一.双端队列(Deque)

  概念:deque(也称为双端队列)是学习系列与队列类似的项的有序集合。它有两个端部,双端首部和尾部,队列并且项在集合中保持不变。用案

  特性:deque 特殊之处在于添加和删除项是学习系列非限制性的。可以在前面或后面添加新项。双端同样,队列可以从任一端移除现有项。用案在某种意义上,学习系列这种混合线性结构提供了单个数据结构中的双端栈和队列的所有能力。

  注意:即使 deque 可以拥有栈和队列的队列许多特性,它不需要由那些数据结构强制的用案 LIFO 和 FIFO 排序。这取决于你如何持续添加和删除操作。学习系列

  二.Python实现Deque

  Deque的双端抽象数据类型定义:Deque的抽象数据类型应该由以下结构和操作定义。其中元素可以从首部或尾部的队列任一端添加和移除。Deque操作如下:

  Deque() 创建一个空的新 deque。它不需要参数,并返回空的 deque。免费信息发布网

  addFront(item) 将一个新项添加到 deque 的首部。它需要 item 参数 并不返回任何内容。

  addRear(item) 将一个新项添加到 deque 的尾部。它需要 item 参数并不返回任何内容。

  removeFront() 从 deque 中删除首项。它不需要参数并返回 item。deque 被修改。

  removeRear() 从 deque 中删除尾项。它不需要参数并返回 item。deque 被修改。

  isEmpty() 测试 deque 是否为空。它不需要参数,并返回布尔值。

  size() 返回 deque 中的项数。它不需要参数,并返回一个整数。

class Deque: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def addFront(self, item): self.items.append(item) def addRear(self, item): self.items.insert(0,item) def removeFront(self): return self.items.pop() def removeRear(self): return self.items.pop(0) def size(self): return len(self.items)

  Deque的应用案例-回文检查

  回文检测:设计程序,检测一个字符串是否为回文。

  回文:回文是一个字符串,读取首尾相同的字符,例如,radar toot madam。

  分析:该问题的服务器租用解决方案将使用 deque 来存储字符串的字符。我们从左到右处理字符串,并将每个字符添加到 deque 的尾部。在这一点上,deque 像一个普通的队列。然而,我们现在可以利用 deque 的双重功能。 deque 的首部保存字符串的第一个字符,deque 的尾部保存最后一个字符。我们可以直接删除并比较首尾字符,只有当它们匹配时才继续。如果可以持续匹配首尾字符,我们最终要么用完字符,要么留出大小为 1 的deque,取决于原始字符串的长度是偶数还是奇数。在任一情况下,字符串都是回文。

from basic.deque import Deque def palchecker(aString): chardeque = Deque() for ch in aString: chardeque.addRear(ch) stillEqual = True while chardeque.size() > 1 and stillEqual: first = chardeque.removeFront() last = chardeque.removeRear() if first != last: stillEqual = False return stillEqual print(palchecker("lsdkjfskf")) print(palchecker("radar"))

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 这是一篇对完全是新手的一篇技巧,我将向你展示如何在Ubuntu文件管理器中添加书签。现在假如你想知道为什么要这么做,答案很简单。它可以让你可以快速地在左边栏中访问。比如,我在Ubuntu中安装了Copy 云服务。它创建在/Home/Copy。先进入Home目录再进入Copy目录并不是很麻烦,但是我想要更快地访问它。因此我添加了一个书签这样我就可以直接从侧边栏访问了。在Ubuntu中添加书签当你在Files(Ubuntu中的文件管理器)中时,查看顶部菜单。你会看到书签按钮。点击它你会看到将当前路径保存为书签的选项。你可以直接按下Ctrl+D就可以将当前位置保存为书签。如你所见,这里左边栏就有一个新添加的Copy目录:这就是在Ubuntu中管理书签需要做的。我知道这对于大多数用户而言很简单,但是这也许多Ubuntu的新手而言或许还有用。

    这是一篇对完全是新手的一篇技巧,我将向你展示如何在Ubuntu文件管理器中添加书签。现在假如你想知道为什么要这么做,答案很简单。它可以让你可以快速地在左边栏中访问。比如,我在Ubuntu中安装了Copy 云服务。它创建在/Home/Copy。先进入Home目录再进入Copy目录并不是很麻烦,但是我想要更快地访问它。因此我添加了一个书签这样我就可以直接从侧边栏访问了。在Ubuntu中添加书签当你在Files(Ubuntu中的文件管理器)中时,查看顶部菜单。你会看到书签按钮。点击它你会看到将当前路径保存为书签的选项。你可以直接按下Ctrl+D就可以将当前位置保存为书签。如你所见,这里左边栏就有一个新添加的Copy目录:这就是在Ubuntu中管理书签需要做的。我知道这对于大多数用户而言很简单,但是这也许多Ubuntu的新手而言或许还有用。

    2025-11-05 13:19

  • 三星手机e系列(探索三星手机e系列的创新特性及用户体验)

    三星手机e系列(探索三星手机e系列的创新特性及用户体验)

    2025-11-05 12:30

  • 芒果TV2017,崭露头角的视频平台(内容丰富多样化,吸引年轻受众)

    芒果TV2017,崭露头角的视频平台(内容丰富多样化,吸引年轻受众)

    2025-11-05 12:07

  • 凯音N5低频的细腻之声(凯音N5低频给你带来震撼的听觉体验)

    凯音N5低频的细腻之声(凯音N5低频给你带来震撼的听觉体验)

    2025-11-05 11:38

网友点评
热门资讯