python
你一生的故事。
这个作者很懒,什么都没留下…
展开
-
【二叉树】利用最小堆来获取最大元素的k个
import heapq """ 二叉树 先序、中序、后序遍历 先(根)序:先处理根,之后是左子树,然后是右子树 中(根)序:先处理左子树,然后是跟,然后是右子树 后(根)序:先处理左子树,然后是右子树,最后是根 val,left指针,right指针 栈 完全二叉树,有最大堆和最小堆 最大堆:对于每个非叶子节点V,V的值都比它的两个孩子大 金字塔,最小堆为倒金字塔 最大堆支持每次pop操作获原创 2022-03-03 18:30:03 · 337 阅读 · 0 评论 -
运算符重载(加操作)
class Rest: def __init__(self, a, b): self.a = a self.b = b def __str__(self): return "Rest({},{})".format(self.a, self.b) def __add__(self, other): return Rest(self.a + other.a, self.b + other.b) print(Rest(原创 2022-03-03 18:26:31 · 52 阅读 · 0 评论 -
【装饰器】用类实现
class Dec(): def __init__(self,func): pass print("start") self._func = func def __call__(self, *args, **kwargs): self._func() print("end") pass @Dec def test(): print("test") test()原创 2022-03-03 18:24:44 · 80 阅读 · 0 评论 -
【协程】生产者和消费者模式
def consumer(): print('--4、开始执行生成器代码--') response = None while True: print('--5、yield,中断,保存上下文--') n = yield response # 4、yield,中断,保存上下文 print('--8、获取上下文,继续往下执行--') if not n: return print("[C原创 2022-03-03 18:20:08 · 73 阅读 · 0 评论 -
【装饰器】带参数实现
def logging(flag): def decorator(func): def inner(num1, num2): if flag == "+": print("正在进行加法运算") elif flag == "-": print("正在进行减法运算") return func(num1, num2) return inn原创 2022-03-03 18:01:51 · 98 阅读 · 0 评论 -
【单列】实现的2种模式
# 使用装饰器的方式------------------------------------- def singleton(cls): instances = {} def wrapper(*args, **kwargs): if cls not in instances: instances[cls] = cls(*args, **kwargs) return instances[cls] return wrapper原创 2022-03-03 17:57:29 · 34 阅读 · 0 评论 -
【propery属性】实现的两种方式
class Pro1(): def __init__(self): self._age = 0 @property def age(self): return self._age @age.setter def age(self,new_age): self._age = new_age p = Pro1() print(p.age) p.age = 10 print(p.age) class Pro2():原创 2022-03-03 17:53:03 · 66 阅读 · 0 评论 -
【python设计模式】常用的创造模式
# 一个工厂方法的例子 class DogToy: def speak(self): print("wang wang") class CatToy: def speak(self): print("miao miao") def toy_factory(toy_type): if toy_type == 'dog': return DogToy() elif toy_type == 'cat': retu原创 2022-03-03 17:41:38 · 273 阅读 · 0 评论