Python 队列
Queue 队列是一种先进先出(FIFO)的数据类型,新的元素通过 入队 的方式添加进 Queue 的末尾,出队 就是从 Queue 的头部删除元素.
用列表来做 Queue:
queue = [] # 初始化一个列表数据类型对象,作为一个队列 def enQ(): # 定义一个入栈方法 queue.append(raw_input('Enter New String: ').strip()) # 提示输入一个入队的 String 对象,调用 Str.strip() 保证输入的 String 值不包含多余的空格 def deQ(): # 定义一个出队方法 if len(queue) == 0: print "Cannot pop from an empty queue!" else: print 'Remove [',`queue.pop(0)`,']' # 使用反单引号(` `)来代替 repr(),把 String 的值用引号扩起来,而不仅显示 String 的值 # queue.pop(0) 总是将在队列中最前面的元素弹出 def viewQ(): # 定义一个显示队列中的内容的方法 print queue Cmds = {'u':enQ,'o':deQ,'v':viewQ} # 定义一个 Dict 类型对象,将字符映射到相应的 function .可以通过输入字符来执行相应的操作 def showmenu(): # 定义一个操作菜单提示方法 pr = """ (E)nqueue (D)equeue (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()
队列和堆栈的实现方式很相似,区别在于队列总是先弹出第一个元素而堆栈总是先弹出最后一个元素.
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。