Python
Q1nyuChen
Rookie on da way
展开
-
简单工厂、工厂、抽象工厂
简单工厂:唯一工厂类,一个产品抽象类,工厂类的创建方法依据入参判断并创建具体产品对象。工厂方法:多个工厂类,一个产品抽象类,利用多态创建不同的产品对象,避免了大量的if-else判断。抽象工厂:多个工厂类,多个产品抽象类,产品子类分组,同一个工厂实现类创建同组中的不同产品,减少了工厂子类的数量。在下述情况下可以考虑使用工厂模式:在编码时不能预见需要创建哪种类的实例。系统不应依赖于产品类实例如何被创建、组合和表达的细节# 简单工厂# 缺点:如果增加新的产品类型,就需要在if-else里增.原创 2022-04-26 15:06:07 · 347 阅读 · 0 评论 -
Python 多线程例子
'''线程里面的锁'''import threadingimport timelock = threading.Lock() # 创建了锁share_date = 0 # 创建了一个变量def tstart(): time.sleep(0.1) global share_date if lock.acquire(): # 获取了锁 share_date += 1 lock.release() # 释放锁# tstart(1)原创 2022-04-19 14:27:34 · 519 阅读 · 0 评论 -
Python 设计模式实例
工厂模式class Operation: def __init__(self, num1=0, num2=0): self.num1 = num1 self.num2 = num2 def calculate(self): passclass Add(Operation): def calculate(self): return self.num1 + self.num2class Sub(Operati原创 2022-04-19 14:20:06 · 223 阅读 · 0 评论 -
Shuffle an Array & Linked List Random Node
leetcode 384class Solution: def __init__(self, nums: List[int]): self.nums = nums self.ori = nums[:] self.n = len(nums) def reset(self) -> List[int]: self.nums = self.ori[:] return self.nums def sh原创 2022-03-14 14:28:12 · 401 阅读 · 0 评论 -
滑动窗口模版
def findSubstring(s): N = len(s) # 数组/字符串长度 left, right = 0, 0 # 双指针,表示当前遍历的区间[left, right],闭区间 counter = collections.Counter() # 用于统计 子数组/子区间 是否有效 res = 0 # 保存最大的满足题目要求的 子数组/子串 长度 while right < N: # 当右边的指针没有搜索到 数组/字符串 的结尾 co原创 2022-02-25 10:33:00 · 48 阅读 · 0 评论 -
排序算法(Python)
import randomclass Selection(object): @staticmethod def sort(nums): n = len(nums) for i in range(n): min_idx = i for j in range(i + 1, n): if nums[j] < nums[min_idx]:原创 2022-01-09 20:31:46 · 361 阅读 · 0 评论 -
线段树代码
学习资源:https://www.bilibili.com/video/av47331849/# 线段树# 对于满二叉树来说,当前节点下标i, 左儿子下标2i+1, 右儿子下标2i+2# 0# 1 2# 3 4 5 6def build_tree(arr, tree, node, start, end): # node为根节点下标 if start == end: tree[node] = a原创 2021-11-30 15:41:40 · 266 阅读 · 0 评论 -
迪克斯特拉算法
参考:算法图解# 在未处理的节点中找到开销最小的节点def find_lowest_cost_node(costs, processed): lowest = float("inf") lowest_cost_node = None for node in costs: cost = costs[node] if cost < lowest and node not in processed: lowest = co原创 2021-11-01 13:55:13 · 99 阅读 · 0 评论 -
简单快速排序 (python)
def q_sort(arr): if len(arr) < 2: return arr else: pivot = arr[0] less = [i for i in arr[1:] if i <= pivot] greater = [i for i in arr[1:] if i > pivot] return q_sort(less) + [pivot] + q_sort(greater)原创 2021-10-29 10:27:34 · 104 阅读 · 0 评论 -
Python tuple / namedtuple
# ****************************开始#元组拆包#只提取color,尺码没用,所以赋值给_占位符tshirts = [('black','xl'),('white','l'),('red','s')]for color,_ in tshirts: print(color)#元组拆包:平行赋值color,size,brand = ('red','xl'...原创 2020-03-17 14:57:56 · 131 阅读 · 0 评论 -
Python 使用pipenv安装虚拟环境 + PyCharm打开
安装 virtualenv提前修改好国内源,加快下载速度。C:\Users\qinyu>pip install virtualenv创建虚拟环境在目标目录下:ENV为环境名virtualenv ENV可选参数:比如要创建不同python版本的虚拟环境virtualenv -p E:\Python\python.exe ENV是否继承系统的三方库(如果不加此项,到时候只...原创 2020-03-03 00:28:45 · 447 阅读 · 0 评论 -
Python 面向对象
dir 内置函数在 标识符 / 数据 后输入一个 .,然后按下 TAB 键,iPython 会提示该对象能够调用的 方法列表使用内置函数 dir 传入 标识符 / 数据,可以查看对象内的 所有属性及方法提示 __方法名__ 格式的方法是 Python 提供的 内置方法 / 属性定义类方法 的定义格式和之前学习过的函数 几乎一样区别在于第一个参数必须是 self创建对象对象变量...原创 2020-02-24 20:14:46 · 197 阅读 · 0 评论