常见的数据结构:
list dict tuple set str
在c语言中 : 数组 链表 结构体
树 堆 栈 队列
树:平衡树 二叉树 红黑树
堆: 最大值堆 最小值堆
# 堆排序
栈 后进先出 LIFO
队列 先进先出 FIFO
import queue #队列 # 先进先出 FIFO q = queue.Queue(3) print(q.qsize()) # 0 print(q.empty()) # True print(q.full()) # False q.put(1) q.put('ancdf') q.put([1,2,3]) # print('已经放了3个') # q.put([1,2,3]) #限制了只能进入三个所以到此停止 # print('已经放了4个') print(q) # <queue.Queue object at 0x000002D088DED828> print(q.get()) # 1 print(q.get()) # ancdf print(q.get()) # [1, 2, 3] print(q.get()) # 阻塞
import queue #栈 后进先出 lifoq = queue.LifoQueue() lifoq.put(1) lifoq.put(2) lifoq.put(3) lifoq.put(4) lifoq.put(5) print(lifoq.get()) print(lifoq.get())
例题:三级菜单:
menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { "人民广场": { '炸鸡店': {} } }, '闸北': { '火车战': { '携程': {} } }, '浦东': {}, }, '山东': {}, } l = [menu] while l: for k in l[-1]: print(k) key = input('>>>') if key.upper() == 'B': l.pop() elif key.upper() == 'Q': l.clear() elif l[-1].get(key): l.append(l[-1][key])