ホームページ  >  記事  >  バックエンド開発  >  Python データ構造スタックのサンプルコード

Python データ構造スタックのサンプルコード

高洛峰
高洛峰オリジナル
2017-02-07 13:02:021237ブラウズ

Python スタック

スタックは後入れ先出し (LIFO) データ構造であり、LIFO 特性を持つほとんどのプログラム フローを処理するために使用できます。
スタックでは、プッシュとポップが一般的な用語です。

push: スタックにオブジェクトをプッシュすることを意味します。

pop: スタックからオブジェクトをポップすることを意味します。

以下は、Python で実装された単純なスタック構造です。

stack = []         # 初始化一个列表数据类型对象, 作为一个栈
 
def pushit():       # 定义一个入栈方法
  stack.append(raw_input('Enter New String: ').strip())   
  # 提示输入一个入栈的 String 对象, 调用 Str.strip() 保证输入的 String 值不包含多余的空格
 
def popit():        # 定义一个出栈方法
  if len(stack) == 0:
    print "Cannot pop from an empty stack!"
  else:
    print 'Remove [', `stack.pop()`, ']'
    # 使用反单引号(` `)来代替 repr(), 把 String 的值用引号扩起来, 而不仅显示 String 的值
 
def viewstack():      # 定义一个显示堆栈中的内容的方法
    print stack
 
CMDs = {'u':pushit, 'o':popit, 'v':viewstack}
# 定义一个 Dict 类型对象, 将字符映射到相应的 function .可以通过输入字符来执行相应的操作
 
def showmenu():      # 定义一个操作菜单提示方法
  pr = """
  p(U)sh
  p(O)p
  (V)iew
  (Q)uit
 
  Enter choice: """
 
  while True:
    while True:
      try:
        choice = raw_input(pr).strip()[0].lower()
        # Str.strip() 去除 String 对象前后的多余空格
        # Str.lower() 将多有输入转化为小写, 便于后期的统一判断
        # 输入 ^D(EOF, 产生一个 EOFError 异常)
        # 输入 ^C(中断退出, 产生一个 keyboardInterrupt 异常)
 
      except (EOFError, KeyboardInterrupt, IndexError):
        choice = 'q'
 
      print '\nYou picked: [%s]' % choice
 
      if choice not in 'uovq':
        print 'Invalid option, try again'
      else:
        break
 
 
    if choice == 'q':
      break
    CMDs[choice]()
    # 获取 Dict 中字符对应的 functionName, 实现函数调用
 
if __name__ == '__main__':
  showmenu()

注: スタック データ構造では、メインList データ型オブジェクトのコンテナーと可変性の機能が適用され、これは 2 つのリスト型組み込み関数 List.append() と List.pop() の呼び出しに反映されます

読んでいただきありがとうございます。このサイトをサポートしていただきありがとうございます!

Python データ構造スタックのサンプル コードに関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。