栈(stack)是一个项的有序集合,其中添加移除新项总发生在同一端。这一端通常称为“顶部”。与顶部对应的端称为“底部”。

就像图片所描述的,栈s=(a1,a2,…an-1,an)。最后入栈的是an,最先出栈的也是an。所以栈符合LIFO原则。

LIFO

LIFO,即后进先出的排序原则。它基于在集合内的时间长度做排序。较新的项靠近顶部,较旧的项靠近底部。栈的底部很重要,因为在栈中靠近底部的项是存储时间最长的。最近添加的项是最先会被移除的。

栈之所以重要是因为它能反转项的顺序。插入跟删除顺序相反。

最典型的例子就是每个 web 浏览器都有一个返回按钮。当你浏览网页时,这些网页被放置在一个栈中(实际是网页的网址)。你现在查看的网页在顶部,你第一个查看的网页在底部。如果按‘返回’按钮,将按相反的顺序浏览刚才的页面。

Python实现栈# 创建一个空的新栈。 它不需要参数,并返回一个空栈。

class Stack:

def __init__(self):

self.items = []

# 测试栈是否为空。不需要参数,并返回布尔值。

def isEmpty(self):

return self.items == []

# 将一个新项添加到栈的顶部。它需要 item 做参数并不返回任何内容。

def push(self, item):

self.items.append(item)

# 从栈中删除顶部项。它不需要参数并返回 item 。栈被修改。

def pop(self):

return self.items.pop()

# 从栈返回顶部项,但不会删除它。不需要参数。 不修改栈。

def peek(self):

return self.items[len(self.items)-1]

# 返回栈中的 item 数量。不需要参数,并返回一个整数。

def size(self):

return len(self.items)

将十进制数转换为任意进制数

知道了栈的基本操作就做一个小项目来练练手。将十进制数转换为任意进制数,其实最高也就十六进制(还有更高进制吗)。def baseConverter(n, base):

# n是输入的十进制数字,base为要转化的进制数

digits = '0123456789ABCDEF'

#创建一个新栈

s= Stack()

# 将每次计算所得的余数添加进栈

while n> 0:

rem = n % base

s.push(rem)

n = n // base

# 将余数倒序排列至新字符串

newString = ''

while not remstack.isEmpty():

newString = newString digits[remstack.pop()]

return newString

相关推荐:《Python教程》

stack在python中是什么意思_python中的栈指的是什么相关推荐

  1. python中函数的作用域_Python中的函数作用域

    在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:', ...

  2. python列表怎么写文件_python中以字典为元素的列表怎么写入文本文件

    python如何将列表中的元素添加进字典纵然被命运的铁蹄狠狠践踏,也顽强地长出自己的根芽. 录入自己和另一个人的名字的汉语拼音简写,然后依据标识符中字母的数值两个人,一颗心,依偎的不是爱情而是那小温暖 ...

  3. python中赋值语句的作用_python中return可以使用赋值语句吗?

    在python中,有各种不同类型的语句.一个python程序是由模块构成的;一个模块由一条或多条语句组成;每个语句由不同的表达式组成;表达式可以创建和操作对象.下面来看看python中的语句. 赋值语 ...

  4. python读取字典元素笔记_Python中列表、字典、元组数据结构的简单学习笔记

    列表 列表是Python中最具灵活性的有序集合对象类型.与字符串不同的是,列表可以包含任何类型的对象:数字.字符串甚至其他列表.列表是可变对象,它支持原地修改的操作. Python的列表是: 任意对象 ...

  5. python中round函数参数_python中关于round函数的小坑

    round函数很简单,对浮点数进行近似取值,保留几位小数.比如 >>> round(10.0/3, 2) 3.33 >>> round(20/7) 3 第一个参数是 ...

  6. python里的join方法_python中join()方法介绍

    描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str . join ( sequence ) 参数 sequence -- ...

  7. python常用函数的用法_python中常用函数整理

    1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object):""&qu ...

  8. python中反斜杠_Python中的正斜杠/与反斜杠\

    知识点: 1. "/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠 2. 对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠\. ...

  9. python中的元类_Python中的元类(metaclass)

    提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自身有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理 ...

  10. python中end 1 意思_python中“end=”是什么意思?_后端开发

    c语言fopen函数的用法_后端开发 在c语言中可以使用"fopen()"函数打开一个文件,该函数用于打开一个文件,其语法是"open("file a" ...

最新文章

  1. Leangoo敏捷看板管理 6.3.8
  2. 算法----计算机程序设计之魂
  3. Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案
  4. jQuery Portamento 滑动定位
  5. android+studio2.1+是否不支持感染到了.0,Android studio 2.2.3 升级到2.3遇到的问题
  6. 淘宝宝贝类目怎么更换?
  7. 如何删除双系统中的ubuntu系统
  8. 管程(Moniter): 并发编程的基本心法
  9. cpuz测试分数天梯图_PC电脑桌面CPU天梯图2020 单路CPU性能排名
  10. 【software】常见流氓软件
  11. Git 版本控制的基本使用教程
  12. Android4.4监听耳机插入处理方法
  13. Prometheus+Alertmanager详细配置邮箱告警
  14. php中表格第一行不动,word表格行高拉不动怎么办
  15. 一个免费提供Linux相关ebook的站点
  16. 360和金山毒霸那个好?
  17. Cesium之b3dm格式
  18. 关于139邮箱的技术问题
  19. 小程序毕设作品之微信美食菜谱小程序毕业设计成品(5)任务书
  20. DirectX12 简单入门(一)

热门文章

  1. Oracle 11g如何清理数据库的历史日志详解
  2. 数据库之Mac下Mysql命令全集
  3. 批量删除html网页,ie浏览器收藏夹网页批量删除方法
  4. uniapp微信小程序授权登录和获取微信绑定的手机号码
  5. 关于医院精确套打发票的实现
  6. 量化中获取A股交易日信息
  7. 国内几款接口管理平台,使用体验分析对比:总有一款是你想要的!
  8. ImageButton点击替换背景再次点击显示默认图片
  9. html如何防止内部撑开,父div没有被撑开,该怎么解决?_html/css_WEB-ITnose
  10. 项目管理心得体会(一)