栈和队列
-
内置的数据结构
{} key-value 通过key找value很快
[] 序列 通过index取值非常块
() 元组
{1,}集合
'eytd'字符串
-
不是python内置的
-
Queue队列:先进先出FIFO
''' 先进先出 Queue()创建一个空的新队列 ''' class Queue(): def __init__(self): self.items = [] def enqueue(self, item): self.items.insert(0, item) def dequeue(self): return self.items.pop() def isEmpty(self): return self.items == [] def size(self): return len(self.items) q = Queue() q.enqueue(1) q.enqueue(2) q.enqueue(3) print(q.dequeue()) print(q.dequeue()) print(q.dequeue()) -
Stack栈:后进先出LIFO
''' 栈顶、栈尾、先进后出 Stack()创建一个空的新栈,它不需要参数,并返回一个空栈 peek()从栈返回栈顶,但不会删除它,不需要参数,不修改栈 isEmpty()测试栈是否为空 ''' class Stack: def __init__(self): self.items = [] def push(self,item): self.items.append(item) def pop(self): return self.items.pop() def peek(self): return len(self.items)-1 def isEmpty(self): return self.items == [] def size(self): return len(self.items) stack = Stack() stack.push(1) stack.push(2) stack.push(3) print("栈顶元素下标:", stack.peek()) print(stack.isEmpty()) print("元素个数:", stack.size()) print(stack.pop()) print(stack.pop()) print(stack.pop())
-
-
结合继承
# 方法一 class Foo: def __init__(self): self.items = [] def put(self,item): self.items.append(item) def get(self): return self.items.pop() #队列 class Queue(Foo): def get(self): return self.items.pop(0) #栈 class Stack(Foo):pass #方法二 class Foo: def __init__(self): self.items = [] def put(self,item): self.items.append(item) def get(self): return self.items.pop() if self.index else self.items.pop(0) #队列 class Queue(Foo): def __init__(self): self.index = 0 Foo.__init__(self) #栈 class Stack(Foo): def __init__(self): self.index = 1 Foo.__init__(self) q = Queue() q.put(1) q.put(2) print(q.get()) print(q.get()) stack = Stack() stack.put(3) stack.put(4) print(stack.get()) print(stack.get()) -
练习
#创建Mypickle类 import pickle # 栈 class Stack: def __init__(self): self.items = [] def put(self,item): self.items.append(item) def get(self): return self.items.pop() class Mypickle: def __init__(self, path): self.file = path def dump(self,obj): with open(self.file, 'ab') as f: pickle.dump(obj, f) def load(self): with open(self.file, 'rb') as f: while True: try: yield pickle.load(f) except EOFError: break # def load(self): # l = [] # with open(self.file, 'rb') as f: # while True: # try: # l.append(pickle.load(f)) # except EOFError: # break # return l pic = Mypickle('pickcle_file') # s1 = Stack() # s1.put('111') # s1.put('222') # s1.put('333') # pic.dump(s1) # s2 = Stack() # s2.put('aaa') # s2.put('bbb') # s2.put('ccc') # pic.dump(s2) for i in pic.load(): print(i.items) #['111', '222', '333'] #['aaa', 'bbb', 'ccc']

浙公网安备 33010602011771号