溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python中棧是什么意思

發(fā)布時(shí)間:2020-11-16 11:32:04 來源:億速云 閱讀:215 作者:小新 欄目:編程語言

這篇文章主要介紹python中棧是什么意思,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

棧(stack)是一個(gè)項(xiàng)的有序集合,其中添加移除新項(xiàng)總發(fā)生在同一端。這一端通常稱為“頂部”。與頂部對(duì)應(yīng)的端稱為“底部”。

python中棧是什么意思

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

LIFO

LIFO,即后進(jìn)先出的排序原則。它基于在集合內(nèi)的時(shí)間長度做排序。較新的項(xiàng)靠近頂部,較舊的項(xiàng)靠近底部。棧的底部很重要,因?yàn)樵跅V锌拷撞康捻?xiàng)是存儲(chǔ)時(shí)間最長的。最近添加的項(xiàng)是最先會(huì)被移除的。

棧之所以重要是因?yàn)樗芊崔D(zhuǎn)項(xiàng)的順序。插入跟刪除順序相反。

最典型的例子就是每個(gè) web 瀏覽器都有一個(gè)返回按鈕。當(dāng)你瀏覽網(wǎng)頁時(shí),這些網(wǎng)頁被放置在一個(gè)棧中(實(shí)際是網(wǎng)頁的網(wǎng)址)。你現(xiàn)在查看的網(wǎng)頁在頂部,你第一個(gè)查看的網(wǎng)頁在底部。如果按‘返回’按鈕,將按相反的順序?yàn)g覽剛才的頁面。

Python實(shí)現(xiàn)棧

# 創(chuàng)建一個(gè)空的新棧。 它不需要參數(shù),并返回一個(gè)空棧。
class Stack:
    def __init__(self):
        self.items = []
        
    # 測(cè)試棧是否為空。不需要參數(shù),并返回布爾值。
    def isEmpty(self):
        return self.items == []
    
    # 將一個(gè)新項(xiàng)添加到棧的頂部。它需要 item 做參數(shù)并不返回任何內(nèi)容。
    def push(self, item):
        self.items.append(item)
        
    # 從棧中刪除頂部項(xiàng)。它不需要參數(shù)并返回 item 。棧被修改。
    def pop(self):
        return self.items.pop()
    
    # 從棧返回頂部項(xiàng),但不會(huì)刪除它。不需要參數(shù)。 不修改棧。
    def peek(self):
        return self.items[len(self.items)-1]
    
    # 返回棧中的 item 數(shù)量。不需要參數(shù),并返回一個(gè)整數(shù)。
    def size(self):
        return len(self.items)

將十進(jìn)制數(shù)轉(zhuǎn)換為任意進(jìn)制數(shù)

知道了棧的基本操作就做一個(gè)小項(xiàng)目來練練手。將十進(jìn)制數(shù)轉(zhuǎn)換為任意進(jìn)制數(shù),其實(shí)最高也就十六進(jìn)制(還有更高進(jìn)制嗎)。

def baseConverter(n, base):
    
    # n是輸入的十進(jìn)制數(shù)字,base為要轉(zhuǎn)化的進(jìn)制數(shù)
    digits = '0123456789ABCDEF'
    
    #創(chuàng)建一個(gè)新棧
    s= Stack()
    
    # 將每次計(jì)算所得的余數(shù)添加進(jìn)棧
    while n> 0:
        rem = n % base
        s.push(rem)
        n = n // base
    
    # 將余數(shù)倒序排列至新字符串    
    newString = ''
    while not remstack.isEmpty():
        newString = newString + digits[remstack.pop()]
        
    return newString

以上是python中棧是什么意思的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI