python数据结构——双端队列

一步一步学python之(23)队列-deque双端队列 Python队列操作指南:介绍了队列的基本概念和Python中实现队列的多种方式。文章首先讲解使用列表模拟队列的操作方法,包括创建、入队、出队等基本操作。重点介绍了collections模块中的deque双端队列,详细说明其创建方法、添加/移除元素、查找元素、扩展队列、旋转队列和清空队列等操作,并提供了丰富的代码示例和运行结果。文章强调在Python中使用专门的队列模块比单纯使用列表更高效,尤其适合多线程环境。 阅读详情

python数据结构——双端队列

一、队列

1、什么是队列?

​ 队列是一种先进先出的数据结构(数据结构:用于存储一系列数据的集合我们就称之为数据结构,python原生的数据结构有:list、tuple、dict、set)它类似于列表和堆栈,而栈是一种后进后出的数据结构。队列是一群人或者事物按照一定的顺序等待接受服务或者处理。队列只允许在后端进行插入操作,在前端进行删除操作,这两种操作又叫 - 入队和出队操作。

2、工作原理(什么是先进先出?)

​ 比如:现实生活中我们去超市买东西,我们买好东西结账的时候就需要排队,那么这个排队就是入队,当结完账走了就是出队,这个整个过程或者说行为就是我们就称之为——队列的工作原理。

二、双向队列

1、队列介绍

​ python标准库中有多种队列,比如 :queue.Queue 、asyncio.Queue 、 multiprocessing.Queue 、collections.deque

而我们今天学习的就是 collections 模块下的 deque 类,我们称这个类为 “双向队列” 或者 “双端队列”。

2、双端队列

​ “双端队列” 是一种具有队列和栈的性质的数据结构。双端队列的元素可以从两端弹出,限定插入和删除操作可以在队列的两端进行,我们可以理解为 “双端队列” 可以从队列的两端对元素进行添加和删除……等的操作,并且我们可以在创建或者说实例化 “双端队列” 的时候指定队列的长度或者说大小。当这个队列满了,我们可以反向端删除过期元素(从前删除),然后将新元素添加到队列的末尾。

3、原理图

在这里插入图片描述

4、常用操作

(1)导入 deque 类
from collections import deque
(2)创建双端队列对象
listdq = deque(iterable, maxlen)
# 参数说明
iterable : 可迭代对象
maxlen :int类型的缺省参数, 最大长度或者大小
# 示例
listdq = deque(range(10), maxlen=10)
# 创建一个空的双端队列
listdq = deque()
(3)双端队列的旋转

​ 双端队列的旋转操作将接收一个参数n,当 n>0时,队列最右边的n个元素会被移动到队列的右边,原本位置的元素将后移;当n<0时,最左边的n个元素会被移动到右边,原始元素后边的元素将前移。

  • ​ 正向旋转
# 将队列右边的两个元素移动到队列的左边
listdq.rotate(2)
  • ​ 反向旋转
# 将队列左边的两个元素移动到队列的右边
listdq.rotate(-2)
(4)添加元素

​ **① append:**在队列末尾(最右边)添加元素。

​ 说明:

​ 当队列的成员元素到达上限,那么将自动删除最左边的一个元素,其后元素前移,并将需要添加的元素添加到队列的末尾;如果队列中还有空位置,那么将直接添加到最后一个元素的后边。

# 向双端队列的末尾添加元素
listdq.append(40)
listdq.append(22)

​ **② appendleft :**在队列的开始(最左边)添加元素。

​ 说明:

​ 当队列的成员元素到达上限,那么将自动删除最右边的一个元素,其前边的元素后移,并将需要添加的元素添加到队列的开始(最左边);如果队列中还有空位置,那么将直接添加到第一个元素的前边,原来的首元素后移。

# 向双端队列的末尾添加元素
listdq.appendleft(40)
listdq.appendleft(22)

​ **③ extend :**以批量添加的方式,向队列的最后即右边添加元素

​ 说明:

​ 如果批量添加的元素<len(双端队列),那么将在队列的左边删除同样个数的元素,并将需要添加的元素批量添加到队列的最后;如果批量添加的元素>len(双端队列),那么将拿到需要添加元素后边的相同个数的元素,将原始队列中的元素全部替换;如果批量添加的元素=len(双端队列),则直接替换原始队列中的元素。

# 向队列的最右边添加可迭代对象,即批量添加元素
dqlist.extend(range(20))

​ **④ extendleft :**以批量添加元素的方式,向队列的最前边,即最右边添加元素

​ 说明:

​ 如果批量添加的元素<len(双端队列),那么将在队列的右边删除同样个数的元素,并将需要添加的元素批量添加到队列的最前边,即最左边;如果批量添加的元素>len(双端队列),那么将拿到需要添加元素后边的相同个数的元素,将原始队列中的元素全部替换;如果批量添加的元素=len(双端队列),则直接替换原始队列中的元素。

# 向对立欸但最左边添加可迭代对象,即批量添加元素
dqlist.extendleft(range(15,20))
(5)删除元素

​ ① pop 方法

​ 说明:

​ pop 方法用于对双端队列中的最后一个元素,即最右边的元素进行删除操作,并且该函数不能有参数。

# 删除双端队列中最后一个元素,即最右边的元素
dqlist.pop()

​ ② popleft 方法

​ 说明:

​ popleft 方法用于对双端队列中的第一个元素,即最左边的元素进行删除操作,并且该函数不能有参数。

# 删除双端队列中第一个元素,即最左边的元素
dqlist.poplist()

​ ③ remove 方法

​ 说明 :

​ 对队列中已有的元素值进行删除操作,其参数为 object ,即一个已有的对象

# 删除双端队列中某个值的元素,也就是说拿元素值删除元素
dqlist.remove(9)
(6)清空队列
# 清空双端队列,使其成为一个空的队列
dqlist.clear()
(7)获取队列中某个元素出现的个数
# 获取双端队列中9这个元素出现的个数
dqlist.count(9)

(8)通过索引下标取值

# 双端队列具有list的性质,那么就可以使用索引下标的方式来取值
dqlist[0]
dqlist[5]
(7)获取队列中某个元素出现的个数
# 获取双端队列中9这个元素出现的个数
dqlist.count(9)

(8)通过索引下标取值

# 双端队列具有list的性质,那么就可以使用索引下标的方式来取值
dqlist[0]
dqlist[5]
3.python数据结构-双端队列 python实现双端队列 阅读详情

相关推荐

python双向队列deque

mul __(),和 __ imul __() 操作。Deque从版本3.5开始支持 __ add。

flyingluohaipeng的博客 1682

双端队列详解(python)

双端队列(Deque)是一种特殊的队列,它允许在队列的两端进行插入和删除操作。Python中的标准库collections模块提供了deque类,它实现了高效的双端队列数据结构。

qq_49693324的博客 1495

Python数据结构与算法(3.5)——双端队列

双端队列是另一个线性数据结构。虽然它也是一种受限线性表,但与栈和队列不同的是,双端队列的限制很少,它的基本操作也是线性表操作的子集,但从数据类型的角度来讲,它们与线性表又有着巨大的不同。本节将介绍双端队列的定义及其不同实现,并且给出双端队列的一些实际应用。

盼小辉丶的博客 3万+

python实现的==双端队列==双端循环队列

双端队列(Double-ended Queue,简称Deque)是一种具有队列和栈特性的数据结构,允许在队列的两端进行插入和删除操作。双端队列可以在队首和队尾同时进行入队和出队操作,因此可以用来实现更灵活的数据操作。双端循环队列(Circular Deque),也被称为循环双端队列,是一种特殊类型的双端队列,具有循环性质。它的特点是队列的首尾是相连的,形成一个环,使得在队列满时可以重新利用之前的空间。双端循环队列常常用于需要高效利用存储空间的情况,比如循环缓冲区、操作系统任务调度等。

泰敢人辣的博客 2421

Zemax实战录——非序列模式下的微透镜阵列仿真与优化

本文详细介绍了在Zemax非序列模式下进行微透镜阵列仿真的完整流程与优化技巧。文章重点阐述了从序列模式切换到非序列模式的必要性,并逐步指导如何搭建光源、阵列与探测器的仿真环境。核心在于通过调整圆锥系数等关键参数优化像差,并增加光线数以提升仿真精度与均匀性,为光学设计提供可靠依据。

weixin_28339967的博客 524

SNAP实战:哨兵1 SLC数据预处理全流程详解(附避坑指南)

本文详细解析了使用SNAP软件处理哨兵1号SLC数据的完整预处理流程。从轨道精校正、辐射定标到多视与斑点滤波,再到地理编码,文章提供了清晰的操作步骤与核心逻辑,并重点分享了实践中的常见“坑”与解决方案,旨在帮助用户高效、准确地完成SAR数据预处理。

7up55的博客 1027

python数据结构之栈、队列和双端队列

????在上一章的学习中,我们主要学习了怎么去衡量一个算法的好坏,比较常见的方式是使用大O记法,就是所谓的时间复杂度,这一章节我来学习基本的数据结构,如栈、队列和双端队列等等。对往期章节感兴趣的小伙伴可以在下面进行查看????: ...

柳小葱的博客 2205

5分钟搞懂语义通信:如何用深度学习让AI理解你的真实意图?

本文深入解析了语义通信如何利用深度学习技术,实现从传统‘比特保真’到‘语义保真’的范式转移。通过介绍基于神经网络的端到端系统架构、编解码技术及实战案例,阐明AI如何理解并高效传递信息核心意图,为6G时代的人机交互奠定基础。

weixin_29191669的博客 263

双端队列的数据结构与Python实现详解

双端队列的数据结构与Python实现详解(包含详细的完整的程序和数据)_双端队列数据类型及Python实现资源-优快云文库 https://download.youkuaiyun.com/download/xiaoxingkongyuxi/89872737。双端队列的数据结构与Python实现详解(包含详细的完整的程序和数据)_双端队列数据类型及Python实现资源-优快云文库 https://download.youkuaiyun.com/download/xiaoxingkongyuxi/89872737。

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1258

高级数据结构之R树(R-tree)

R树(R-tree)是一种将B树扩展到多维情况下得到的数据结构,它最初由Antonin Guttman于1984年提出。B树的结点中会存储一个键的集合,这些键把线分成片段,沿着那条线的点仅属于一个片段。因此,B树使得我们可以很容易地找到点。如果把沿线各处的点表示成B树结点,我们就能够确定点所属唯一子结点,在那里可以找到该点。 Antonin Guttman在他提出R树的经典论文中给出的R树例子...

白马负金羁 1万+

Python代码加密与发布方案详解

本文详细介绍了多种Python代码保护方案,从基础加密到高级混淆,以及商业化发布的最佳实践。基础加密方案包括编译为字节码和使用PyArmor基础加密,适合临时保护和小项目。商业级加密方案如Cython编译和Nuitka完整打包,提供更高的保护强度和执行效率。高级混淆方案涉及控制流混淆、字符串加密和完整混淆工具链,进一步增加逆向难度。商业化发布方案则强调许可证系统集成、硬件绑定保护和完整发布流程。此外,文章还探讨了反逆向技术、最佳实践建议和常见问题解决方法。通过组合使用这些技术,可以构建出适合不同安全需求的P

数据知道的博客 1万+

Python数据结构学习笔记——队列和双端队列

目录一、队列的定义二、实现分析步骤三、队列的Python实现代码四、队列的应用结语 一、队列的定义 队列和栈一样,也是元素的有序集合,其元素的顺序取决于添加顺序或移除顺序,它也有两端,称作头部和尾部,栈中元素的添加操作和移除操作与栈不一样,添加操作发生在队列的尾部,移除操作发生在队列的头部。 队列中最先添加的元素将最先被移除,队列的排序原则被称作FIFO,即先进先出,最先添加的元素在队列头部,它最先最移出队列。 这种排列方式可以比喻成日常的排队,很多人排成一队,所有的人从队的一端入队,从另一端出队。 队

小宇y的博客 4576

【Android面试八股文】Handler如果没有消息处理是阻塞的还是非阻塞的?Looper 为什么要使用死循环?Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

Handler如果没有消息处理是阻塞的还是非阻塞的? Looper 为什么要使用死循环? Android中为什么主线程不会因为Looper.loop()里的死循环卡死?

字节卷动 760

Python数据结构(三):队列和双端队列

python数据结构中的队列和双端队列

Mrliu__的博客 1207

基于STM32L4XX、HAL库的 L76KB-A58定位模块驱动程序设计

/ 确保字符串终止。// 缓冲区溢出,重置。// 重置缓冲区索引。支持GPS、GLONASS、Galileo、北斗和QZSS多系统定位。case 1: // UTC时间。// 配置GPS模块(可选)// 查找GGA语句。// 启动UART接收。// USART1初始化函数。内置LNA和SAW滤波器。

zhusl6688的博客 349

西南科技大学模拟电子技术实验七(集成运算放大器的非线性应用)预习报告

将电位器Rp调至中心位置,用双综示波器观察并绘制方波U0的波形,测量其幅值和频率;将电位器RP调至中心位置,用示波器观察并绘制锯齿波U0的波形,记录;示波器基线调零,Ui输入1000HZ、幅值为2V的正弦信号,观察并记录Ui与U0波形,读出图中波形跳变时的Ui临界值;用万用表电位器RP调至预测结果位置,用示波器观察并描绘三角波输出U0及方波输出uo’,测其幅值、频率及Rp值,记录之。示波器基线调零,U输入1000HZ、幅值为2V的正弦信号,观察UI与U0波形。理论算法公式:当Ui

Welcome To My6n Blog 3937

数据结构之双端队列:python实现简单的双端队列

双端队列:是一种具有栈和队列性质的数据结构 栈和队列只能从一端添加元素,也只能从一端删除元素 双端队列可以从任意一端添加或删除元素 使用python列表实现代码: class Deque(object): """双端队列""" def __init__(self): self.items = list() def is_empty(self):...

qq_41864652的博客 379

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

python数据结构之双端队列的实现

python数据结构之双端队列 双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。 class DoubleEndedQueue(object): """双端队列""" def __init__(self): ...

Darkman_EX的博客 485

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

python数据结构-栈,队列,双端队列

在英语词典中,堆(Stack)表示将对象放在另一个对象上。 在这个数据结构中分配内存的方式是一样的。 它以类似的方式存储数据元素,类似在厨房中一堆盘子:一个在另一个之上存放。 所以堆栈数据数据允许操作的一端可以称为栈顶。 可在栈顶上添加元素或仅从堆栈中移除元素。

weixin_36058228的博客 522

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【数据结构Python描述】队列和双端队列简介及基于列表的Python实现

本文介绍了普通队列queue和双端队列deque的定义、原型,并使用Python给出了普通队列和双端队列的高效实现。

weixin_37780776的博客 1921

python 数据结构中的队列和双端队列

队列 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出的(First In First Out)的线性表,简称FIFO。 队列的实现 同栈一样,队列也可以用顺序表或者链表实现。 操作 Queue() 创建一个空的队列 enqueue(item) 往队列中添加一个item元素 dequeue() 从队列头部删除一个元素 is_e...

念念不忘,必有回响。 359

Python数据结构03-栈、队列、双端队列

Python数据结构栈队列双端队列 栈 操作 Stack() 创建一个新的空栈 push(item) 添加一个新的元素item到栈顶 pop() 弹出栈顶元素 peek() 返回栈顶元素 is_empty() 判断栈是否为空 size() 返回栈的元素个数 实现 class Stack(object): def __init__(self): "创建一个新的空栈" self._values = [] self._top = -1 def pus

兀洪荒的博客 227

(数据结构python版)第6章栈、队列和双端队列

第六章 栈、队列和双端队列 栈 栈是一系列对象组成的集合,遵循后进先出(LIFO)的原则 栈的示例: 网页的后退操作 文本编辑器的撤销操作 栈的抽象数据类型 形式上,栈支持一下两种操作的抽象数据类型(ADT),S为ADT的实例: S.push(e):将一个元素e添加到栈S的栈顶 S.pop(e):从栈S中移除并返回栈顶的元素,如果栈为空,则报错 此外,为了方便,还定义了访问方法: S.t...

weixin_42194337的博客 313

【4】python中的数据结构栈、队列、双端队列

【1】栈 函数简介 代码 #从基本模块中载入栈 from pythonds.basic import Stack mystack=Stack() for value in range(10): mystack.push(value*2) print(mystack.peek()) #打印栈的地址 print(mystack) #判断栈是否为空 print(mystack.isEmpty()) #返回栈顶的元素 print(mystack.peek()) print(my

qq_33612665的博客 240

数据结构——双端队列及Python实现

双端队列 双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构。 双端队列中的元素可以从两端弹出,其限定插入和删除操作在表的两端进行。双端队列可以在队列任意一端入队和出队。 Python实现 # coding:utf-8 class Deque(object): """双端队列""" def __init__(self)...

黄大堂 307

【数据结构与算法Python】栈与队列_双端队列

004数据结构与算法Python栈栈结构实现栈的操作代码实现(列表实现)队列队列的实现操作双端队列操作实现(顺序表实现) 栈 栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top)进行加入数据(英语:push)和输出数据(英语:pop)的运算。没有了位置概念,保证任何时候可以访问、删除的元素都是此前最后存入的那个元素,确定了一种默认的访问顺序。 由于栈数据结构只允许在一端进行操作,因而按照后进先出(LIFO, La

一梦 233
上一篇: Python基础语法—— 模块和包
下一篇: 收藏一张 Python 正则图
御弟謌謌
博客等级 码龄7年 192粉丝 168原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

御弟謌謌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值