python 栈&队列&列表的区别
Posted 菜鸟程序员_python
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 栈&队列&列表的区别相关的知识,希望对你有一定的参考价值。
1. 栈
栈的特点: 先进后出
简单一句话 栈就是吃多了拉
from queue import LifoQueue
# 进栈
def enter_stack():
s = LifoQueue(5)
print("---------------- 添加元素前 --------------------")
print(s.empty()) # 判断栈是否为空
print(s.queue) # 输出整个栈
print(s.full()) # 判断栈是否已经满了
print(s.full()) # 判断栈是否已经满了
print(s.qsize()) # 输出栈长度
print("---------------- 添加元素后 --------------------")
s.put(1)
s.put(2)
s.put(3)
s.put(4)
s.put(5)
print(s.empty()) # 判断栈是否为空
print(s.queue) # 输出整个栈
print(s.full()) # 判断栈是否已经满了
print(s.full()) # 判断栈是否已经满了
print(s.qsize()) # 输出栈长度
# 出栈
def stack_out():
s = LifoQueue(5)
print("---------------- 添加元素前 --------------------")
print(s.empty()) # 判断栈是否为空
print(s.queue) # 输出整个栈
print(s.full()) # 判断栈是否已经满了
print(s.full()) # 判断栈是否已经满了
print(s.qsize()) # 输出栈长度
print("---------------- 添加元素后 --------------------")
s.put(1)
s.put(2)
s.put(3)
s.put(4)
s.put(5)
print(s.empty()) # 判断栈是否为空
print(s.queue) # 输出整个栈
print(s.full()) # 判断栈是否已经满了
print(s.full()) # 判断栈是否已经满了
print(s.qsize()) # 输出栈长度
print("---------------- 出栈 --------------------")
print(s.get())
print(s.get())
print(s.get())
print(s.get())
print(s.get())
print(s.empty()) # 判断栈是否为空
print(s.queue) # 输出整个栈
print(s.full()) # 判断栈是否已经满了
print(s.full()) # 判断栈是否已经满了
print(s.qsize()) # 输出栈长度
if __name__ == ‘__main__‘:
print("=============== start 给栈中添加元素 ======================")
enter_stack()
print("================= end 给栈中添加元素 ======================
")
print("=============== start 从栈中取出元素 ======================")
stack_out()
print("================= end 从栈中取出元素 ======================
")
2. 队列
队列的特点: 先进先出
队列简单一句话 对列就是吃多了吐
from queue import Queue # 给对列中添加元素 def add_queue(): q = Queue(5) # 创建一个长度为5的队列 print("---------------- 添加元素前 --------------------") print(q.empty()) # 判断队列是否为空 print(q.queue) # 输出整个队列 print(q.full()) # 判断队列是否已经满了 print(q.full()) # 判断队列是否已经满了 print(q.qsize()) # 输出队列长度 print("---------------- 添加元素后 --------------------") q.put("元素1") q.put("元素2") q.put("元素3") q.put("元素4") q.put_nowait("元素5") # 非阻塞入队 print(q.empty()) # 判断队列是否为空 print(q.queue) # 输出整个队列 print(q.full()) # 判断队列是否已经满了 print(q.full()) # 判断队列是否已经满了 print(q.qsize()) # 输出队列长度 # q.put_nowait("元素6") # 非阻塞入队 """ 注意: 当队列满了之后就不能向对列中添加元素了,不然会报错(queue.Full)或导致程序无法停止 对列中的元素可以是任意数据类型(字符串,数字,列表,字典,元祖,集合...)""" # 从对列中取出元素 def out_queue(): q = Queue(5) # 创建一个长度为5的队列 print("---------------- 添加元素前 --------------------") print(q.empty()) # 判断队列是否为空 print(q.queue) # 输出整个队列 print(q.full()) # 判断队列是否已经满了 print(q.full()) # 判断队列是否已经满了 print(q.qsize()) # 输出队列长度 print("---------------- 添加元素后 --------------------") q.put("元素1") q.put("元素2") q.put("元素3") q.put("元素4") q.put_nowait("元素5") # 非阻塞入队 print(q.empty()) # 判断队列是否为空 print(q.queue) # 输出整个队列 print(q.full()) # 判断队列是否已经满了 print(q.full()) # 判断队列是否已经满了 print(q.qsize()) # 输出队列长度 print("---------------- 取出元素 --------------------") print(q.get()) print(q.get()) print(q.get()) print(q.get()) print(q.get_nowait()) # 非阻塞出队 print(q.empty()) # 判断队列是否为空 print(q.queue) # 输出整个队列 print(q.full()) # 判断队列是否已经满了 print(q.full()) # 判断队列是否已经满了 print(q.qsize()) # 输出队列长度 # print(q.get_nowait()) # 非阻塞出队 """ 注意: 当队列空了之后就不能取出元素了,不然会报错(queue.Empty) """ if __name__ == ‘__main__‘: print("=============== start 给对列中添加元素 ======================") add_queue() print("================= end 给对列中添加元素 ====================== ") print("=============== start 从对列中取出元素 ======================") out_queue() print("================= end 从对列中取出元素 ====================== ")
3. 列表
""" # 追加元素 List.append(var) # 清除所有元素 List.clear() # 复制列表 List.copy() """ list_1 = [] list_1.append("元素1") list_1.append("元素2") list_1.append("元素3") list_1.append("元素4") list_1.append("元素5") print(list_1) list_2 = list_1.copy() print(list_2) list_2.clear() print(list_1) print(list_2) import datetime today = datetime.date.today() tomorrow = today + datetime.timedelta(days=1) print(str(tomorrow) + " 00:00:00") aftertomorrow = today + datetime.timedelta(days=2) print(str(aftertomorrow) + " 00:00:00") s=[ {"no":28,"score":90}, {"no":25,"score":90}, {"no":1,"score":100}, {"no":2,"score":20}, ] print("original s: ",s) # 单级排序,仅按照score排序 new_s = sorted(s,key = lambda e:e.__getitem__(‘score‘)) print("new s: ", new_s) # 多级排序,先按照score,再按照no排序 new_s_2 = sorted(new_s,key = lambda e:(e.__getitem__(‘score‘),e.__getitem__(‘no‘))) print("new_s_2: ", new_s_2)
以上是关于python 栈&队列&列表的区别的主要内容,如果未能解决你的问题,请参考以下文章
脑筋急转弯:如何用两个栈实现一个队列 && 如何用两个队列实现一个栈
脑筋急转弯:如何用两个栈实现一个队列 && 如何用两个队列实现一个栈