视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
python中的栈指的是什么
2020-11-27 14:06:34 责编:小采
文档


栈(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 = '01234567ABCDEF'
 
 #创建一个新栈
 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

下载本文
显示全文
专题