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 栈&队列&列表的区别的主要内容,如果未能解决你的问题,请参考以下文章

脑筋急转弯:如何用两个栈实现一个队列 && 如何用两个队列实现一个栈

脑筋急转弯:如何用两个栈实现一个队列 && 如何用两个队列实现一个栈

栈实现队列&队列实现栈

栈&队列&堆

JVM--理解栈 & 队列 & 栈 + 堆 + 方法区的交互关系

javajava两个栈实现一个队列&两个队列实现一个栈