排序算法汇总
冒泡排序1234567def bubbleSort(nums): n = len(nums) for i in range(n): for j in range(n-i-1): if nums[j] > nums[j+1]: nums[j], nums[j+1] = nums[j+1], nums[j] return nums
归并排序123456789101112131415161718192021222324252627def merge(arr1, arr2): temp = [] i, j = 0, 0 n1, n2 = len(arr1), len(arr2) while i < n1 or j < n2: if i < n1 and j < n2: if arr1[i] <= arr2[j]: temp.append(arr1[i]) ...
Leetcode 61. Rotated List
题目链接:Leetcode 61. Rotate List
本题采用快慢指针的思路,让fast指针比slow指针多走k步,当fast走到链表最后一个结点时,断开slow指针所在位置,使其指向None;并将fast指针指向链表头结点。
考虑到k值可能大于链表长度,需将k值在链表长度上进行取模运算。
完整代码如下:
123456789101112131415161718192021222324252627282930313233# Definition for singly-linked list.# class ListNode(object):# def __init__(self, val=0, next=None):# self.val = val# self.next = nextclass Solution(object): def rotateRight(self, head, k): """ :type head: ListNode :type k: int ...
Leetcode 33. 搜索旋转排序数组
题目链接:Leetcode 33. 搜索旋转排序数组
本题将采用二分查找寻找目标值;首先通过对比left、right和mid下标对应的值,可知mid分割的哪一侧是有序的;然后判断target是否属于有序的一侧,若属于,则在有序侧查找,反之,在另一侧查找。
例如,在数组nums = [5,6,7,1,2,3,4]中查找target = 3。此时,下标left = 0、right = 6、mid = 3;因为nums[right] > nums[mid],则右侧nums[mid: ]是有序的,又因为nums[mid] < target < nums[right],所以下一轮要在右侧进行查找。
完整代码如下:
12345678910111213141516171819202122class Solution(): def search(self, nums, target): left, right = 0, len(nums)-1 while left <= right: mid = left + (right ...
streamlit入门学习笔记
安装1pip install install streamlit
启动12345# 方法一python -m streamlit run your_script.py# 方法二streamlit run your_script.py
使用方法st.write()的简单使用使用st.write()在网页上画出任何你想展示的内容,包括:text、data、matplotlib plot、charts等
123456789# 代码示例import streamlit as stimport pandas as pdst.write("Here's our first attempt at using data to create a table:")st.write(pd.DataFrame({ 'first column': [1, 2, 3, 4], 'second column': [10, 20, 30, 40]}))
使用st.table()和st.dataframe()画表格 ...
用Optimum的ONNX runtime加速sentence transformer(Pytorch+GPU)
在本篇教程中,你将会学习到如何使用Optimum来加快Sentence Transformer模型的推理速度。
本文使用的Sentence Transformer模型是m3e-base,该模型是当前效果较好的中文句向量计算模型。
Hugging Face Optimum是Transformers的扩展,提供了一系列性能优化工具,使得模型的训练和推理更加高效。Optimum中集成了ONNX runtime加速工具。
本教程将按以下步骤展开:
环境配置
将Sentence Transformer模型转换成ONNX格式
自定义模型推理Pipeline
在ONNX模型上应用图优化技术
优化模型推理 + 测试优化模型推理的正确性
性能评估
环境配置运行以下命令,安装Optimum所对应的依赖
1pip install optimum[onnxruntime-gpu]
将Sentence Transformer模型转换成ONNX格式(注意:ONNX是一种模型格式,而ONNX runtime是模型加速方法)将Sentence Transformer模型转换成ONNX格式需要用到ORTModel ...
copilot使用初体验(写代码效率直接翻倍!)
上个月,在同事的强烈安利下,终于用上了这款程序员coding利器,不得不说,用过的人都说好!!!
要是你还不知道什么是copilot,请自行百度;简单来说,它就是一款能帮你写代码的工具,能够极大提高你的工作效率,至少帮你省掉一半的编码时间!
起初,我还担心过于依赖这种智能代码补全工具,会逐渐的降低我的编码能力,那可就太不好了。经过一个多月的使用下来,我发现我的这种想法实在是太native了。
从安装好copilot到现在为止,我都没有可以去网上搜集任何关于使用它的技巧或教程,可见,这个工具对新手来说,上手也是非常容易的,完全没有任何学习成本。当然,肯定还有更多功能等待我去发现。
copilot的安装非常简单,嗯……(某宝,不到30块钱,安装教程很详细)
我是在Vscode上安装的copilot插件。在编码的过程中,copilot会根据你之前所写的内容自动联想你接下来可能要写的内容,大部分情况下,它都能猜对你想写的内容,除非你想写的内容逻辑太过复杂。若是它猜对了,你只需要按下tab键,就能一键补全。像下面这样
那过度依赖copilot会不会真的降低我们的编码能力,或者取代我们???
...
python多进程模板
在工作中,我们经常会用到多进程来处理数据,从而提高工作效率。下文是一个多进程模板,可以按照具体需求进行修改,欢迎使用~
1234567891011121314151617181920212223242526272829303132333435363738394041from multiprocessing import Poolif __name__ == '__main__':from multiprocessing import Poolimport osimport timedef func(data): print(f'进程{os.getpid()}开始处理数据{data}') # 这里写你的数据处理代码 time.sleep(1) print(f'进程{os.getpid()}结束处理数据{data}')def split_data(data_list, cpu_worker_num): ' ...
redis教程(python)
Redis 是一款开源的、高性能的键值对存储数据库。数据保存在内存里,所以读写速度非常快;支持的键值对数据类型包括:字符串、哈希、列表、集合、有序集合。
下文将列举部分在使用redis过程中的常用方法
读取整个redis数据库1234567891011121314151617181920import redis# 示例代码def read_db_redis(): rds = redis.Redis(host='XXXX', port=123456, db=1, password='XXXX') pipe = rds.pipeline() tag_db = {} cursor = 0 while True: cursor, keys = rds.scan(cursor, count=10000) for tag in keys: pipe.get(tag) result = pipe.execute() for tag, ...
python日志模板(即取即用)
本文提供了一个简单的python日志模板,及其简单,欢迎使用!
1234567891011121314151617181920import osimport loggingfrom logging import getLogger, INFOfrom concurrent_log_handler import ConcurrentRotatingFileHandlerdef setup_rotate_logger(file_path, level=logging.INFO): log_fmt = '%(asctime)s \"%(filename)s\" %(process)d %(lineno)s %(levelname)s %(funcName)s: %(message)s ' formatter = logging.Formatter(log_fmt) log = getLogger() logfile = os.path.abspath(file_path) rotateHandler = Concurren ...
vim使用教程,提高你的工作效率
我在入职第一年内,写代码没有使用其他IDE,所有编程工作都是使用vim完成。我将结合一年多的vim使用经验,总结一套最实用的vim使用技巧。
下载最佳搭档 TermiusTermius是ssh客户端,免费好用,界面美观
使用技巧:窗口切换快捷键:Alt + 左右键(掌握这一个就行)
环境配置 .vimrc创建自己的个人Linux账户后,在用户目录(~)下创建.vimrc文件,写入以下内容
12345syntax enableset numberset tabstop=4set expandtabset paste
.vimrc文件主要用于配置vim,例如语法高亮、显示行号、自动缩进等;功能很多,但我觉得以上简单配置就够用了
熟记vim快捷键掌握vim快捷键能够极大的提高工作效率,非常重要
vim命令模式分为三类:编辑模式、命令模式、底线命令模式
12345678910111213141516171819202122232425262728293031编辑模式:- 命令模式下按 i 进入编辑模式,开始编辑文本命令模式:- [ + ]:跳到文件顶部- ] + [:跳到文件底部- C ...