python 栈&队列&列表的区别
2021-01-14 09:13
标签:的区别 === 出队 lambda 判断 start main 元祖 original 栈的特点: 先进后出 队列的特点: 先进先出 队列简单一句话 对列就是吃多了吐 python 栈&队列&列表的区别 标签:的区别 === 出队 lambda 判断 start main 元祖 original 原文地址:https://www.cnblogs.com/xingxingnbsp/p/12941717.html1. 栈
简单一句话 栈就是吃多了拉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)
文章标题:python 栈&队列&列表的区别
文章链接:http://soscw.com/index.php/essay/41709.html