您好,登錄后才能下訂單哦!
這篇文章主要介紹python中棧是什么意思,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
棧(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中棧是什么意思的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。