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 給棧中添加元素 ======================\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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM