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)