stack在python中是什么意思_python中的栈指的是什么

199c4a5ce7a9fb057c8523e6e6210d43.jpg

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

70149e7add315b0239c8ec0da6b46807.png

就像图片所描述的,栈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教程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值