首頁  >  文章  >  後端開發  >  python中的棧指的是什麼

python中的棧指的是什麼

藏色散人
藏色散人原創
2019-07-02 09:27:274536瀏覽

python中的棧指的是什麼

堆疊(stack)是一個項目的有序集合,其中新增移除新項目總是會發生在同一端。這一端通常稱為“頂部”。與頂部對應的端稱為“底部”。

python中的棧指的是什麼

就像圖片所描述的,堆疊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教學

以上是python中的棧指的是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn