• 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)
  • 相关阅读:
    Misc1
    PXE
    VCL
    pacman usage
    .vimrc的配置
    Windows Server 2012 R2
    Windows 入门杂乱无章版
    VS Code Plugins And Configuration
    「Poetize5」GF弹钢琴
    「Poetize4」上帝造题的七分钟2
  • 原文地址:https://www.cnblogs.com/xingxingnbsp/p/12941717.html
Copyright © 2020-2023  润新知