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 給棧中添加元素 ======================\n\n\n") print("=============== start 從棧中取出元素 ======================") stack_out() print("================= end 從棧中取出元素 ======================\n\n\n")
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 給對列中添加元素 ======================\n\n\n") print("=============== start 從對列中取出元素 ======================") out_queue() print("================= end 從對列中取出元素 ======================\n\n\n")
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)