Python 堆疊
堆疊是一個後進先出(LIFO)的資料結構. 堆疊這個資料結構可以用來處理大部分具有後進先出的特性的程式流.
在堆疊中, push 和pop 是常用術語:
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()
NOTE: 在堆疊主要資料結構中應用了List 資料型別物件的容器和可變等特性, 表現在List.append() 和List.pop() 這兩個清單類型內建函數的呼叫.
感謝閱讀,希望能幫助大家,謝謝大家對本站的支持!
更多Python 資料結構之堆疊實例程式碼相關文章請關注PHP中文網!