Python開發中棧的定義及用法詳解

Python開發中棧的定義及用法詳解

前言

  在Python開發中棧的設計和使用是常用到的,可以說是學習Python必須要掌握的一個技能,那麼作爲程序猿的你掌握了多少呢?掌握不熟練?沒關係,跟着小編再來學習一下吧。

正文
  棧是常用的數據結構。儘管一般的面試裏不會讓直接寫一個棧的實現,不過跟棧有關的編程題很多,今天就遇到一個。
  首先看一下棧的定義。棧是一個集合,具有下面的2種基本操作
  push: 把元素加入集合,這個過程我們叫做壓入
  pop: 把最後加入集合的元素從集合中移除,這個過程我們叫做推出
  所以棧在移除元素的時候是遵循LIFO(last in, first out),也就是後進先出的原則的。
  直接設計代碼:

class stack(object):
"""docstring for stack"""
def init(self, data):
self.data = []

def push(self,elm):
    self.data.append(elm)

def pop(self):
    self.data.pop()

def len(self):
    return len(self.data)

def is_empty(self):
    return len(self)== 0

  題目:請使用代碼實現判斷表達式中小括號是否匹配的功能。如果匹配返回True,否則返回False。比如(x (y +z)) +10中,小括號是匹配的。而(a + b) )c - d中小括號是不匹配的。
  遍歷表達式每一個字符
  如左括號,將左括號壓入棧
  如右括號,則判斷棧是否爲空,不爲空則推出,爲空就證明右括號沒有匹配的項目,返回False
  遍歷結束之後判斷棧是否爲空,不爲空則返回False,否則返回True
  完整代碼實現如下
def match_parentthese(erp):

data = stack()

for ele in erp:
    if ele == "(":
        data.push(ele)
    elif ele == ")":
        if data.is_empty():
            return False
            break

        else:
            data.pop()

    else:
        pass

if data.is_empty():
    return True
else:
    return False

結尾

  通過本文各位小盆友們是不是對於Python開發中的棧有了一定的瞭解了?平時還得靠小夥伴們的多多練習學以致用啊。

文章來自:https://www.itjmd.com/news/show-6374.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章