首页 > 编程语言 >Python实现一个简单的栈结构

Python实现一个简单的栈结构

时间:2023-06-19 15:55:07浏览次数:33  
标签:__ .__ Python self len 简单 stack def 结构

基于list来实现一个栈:

class SimpleStack:
    def __init__(self):
        self.__stack: list = []
​
    def __iter__(self):
        return SimpleStackIterator(self)
​
    def __len__(self):
        return len(self.__stack)
​
    def __getitem__(self, index):
        if index >= len(self.__stack):
            return None
        return self.__stack[index]
​
    def pop(self):
        if len(self.__stack) <= 0:
            return None
        return self.__stack.pop()
​
    def push(self, item):
        return self.__stack.append(item)

定义一个栈的迭代器,实现对栈进行迭代,但不弹出栈中的元素

class SimpleStackIterator:
    def __init__(self, iterable: SimpleStack):
        self.__iterable = iterable
        self.__len = len(iterable)
        self.__current = 0
​
    def __iter__(self):
        return self
​
    def __next__(self):
        while True:
            if self.__current >= self.__len:
                raise StopIteration
            ele = self.__iterable[self.__current]
            self.__current += 1
            return ele

具体使用:

stack_size = 5
stack = SimpleStack()
​
for i in range(stack_size):
    stack.push(i)
​
for i in iter(stack):
    print(i)
​
for i in range(stack_size):
    ele = stack.pop()
    print(ele)
 

标签:__,.__,Python,self,len,简单,stack,def,结构
From: https://www.cnblogs.com/Cwj-XFH/p/17491340.html

相关文章

  • Android 代码优化:“这个需求很简单,怎么实现我不管”
    背景before:在我们APP启动过程,我们可能常常有这样的需求:在APP第一次进入的时候根据网络请求的结果弹一个对话框式的广告,ok~很简单,那么代码大致就是这样(这边都是伪代码,为了方便理解):@OverrideprotectedvoidonCreate(@NullableBundlesavedInstanceState){......
  • 【随笔二】Android-kotlin-实现简单计算器功能
    上一篇博客Android-kotlin-配置/入门配置好了AndroidStudioKotlin的环境;今天做一个简单的demo实战—实现一个简单的计算器功能1.选择包名,然后右键:2.选择Class类型,会有class:3.创建CounterClass:packagecn.kotlin.kotlin_oop02/***加减乘除计算的calss*varnumber1:Double......
  • mysql 可以重复执行的表结构修改存储过程
    mysql可以重复执行的表结构修改存储过程当多个数据库要执行同一个sql,但是在其中有一个数据库失败需要重新执行,那么就要保证执行的数据库是可以重复执行的了,下面就是可以重复执行的存储过程,收藏起来DELIMITER;;CREATEPROCEDURE`AddColumnIfNotExists`( tableNameVARCHAR......
  • 算法与数据结构Day03——平衡二叉树的根
    #include<stdio.h>#include<stdlib.h>typedefstructnode*AVLTree;structnode{intData;AVLTreeLeft;AVLTreeRight;};intHigh(AVLTreeT){if(!T)return0;intleft=High(T->Left)+1;intright=High(T->......
  • Android dataBinding简单的封装
    一、简介本文是databinding使用的简单封装,主要是在基类BaseActivity和BaseFragment中二、具体步骤1.在build.gradle中开启databindingdataBinding{enabled=true}2.在BaseActivity的封装,主要是通过反射的方式获取。如下packagecom.zw.databindingdemo.java;importandroid.o......
  • Python3中的函数对象
    在Python中一切皆对象,函数也是一种对象,有相关的属性和方法。对于任意对象,我们可以用dir()函数来获取其内置的属性及方法名,例如:defadd(a:int,b:int=1)->int:"""加法函数"""returna+bprint(dir(add))运行结果如下:['__annotations__','__call__','_......
  • Oracle的体系结构图万花筒
    虽然现在Oracle的版本频繁更新,但万变不离其宗,学习Oracle最重要的一张图就是Oracle体系结构图,由他延展开来的知识可谓是相当丰富,要是能讲清楚这张图,可以说你和大师很近了。这是来自杨大师公众号的一篇文章,汇总了各版本,Oracle高清体系结构图,《【图示篇】_Oracle10g,11g,12c,18c结构......
  • (六)浮动框架、结构化标签
    一、浮动框架 二、结构化标签 ......
  • python之mysql登录验证
    fromdotenvimportload_dotenvimportpymysqlimportosload_dotenv()connection=pymysql.connect(host=os.getenv("HOST"),database=os.getenv("DATABASE"),user=os.getenv("USERNAME"),password=os.getenv("PASSWORD......
  • VScode 中利用virtualenv建立 Python 虚拟环境
    !https://zhuanlan.zhihu.com/p/638114885VScode建立Python虚拟环境主要目的:创建一个与默认python版本不同的python虚拟环境0x01建立新环境文件夹建立一个独立文件夹来存储所有虚拟环境,所以可以事先建好文件夹如:'''E:\WorkSpace\Work\chatGLM'''0x02创建虚拟环......