自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 资源 (2)
  • 问答 (4)
  • 收藏
  • 关注

原创 python中__init__真的会在__new__完成后执行吗?

大家可能都知道,在python中创建一个对象的流程是:首先调用__new__方法创建一个实例,然后再调用__init__方法初始化这个实例对象。这个是常规的思路,也没有什么问题。

2022-07-15 14:49:53 509

原创 python中的property,以及属性和特性之间的优先权

直观的看,特性的目的好像是把方法“属性化”,但这样做一点意义也没有,如果我可以定义一个属性,何必再额外定义一个方法,然后将其转化成属性呢?所以,更重要的目的就是应对一些特定场景。 从特性表现出来的性质和行为来看,它其实就是一种特定的“属性”。只不过特性的权利提升了一点点,就好像你可以去修改这个属性,但是能不能修改成功,就看你的上一级允不允许你修改(有没有给你这个属性添加限定条件),而特性的权利就扩展到了这个“上一级”。......

2022-07-14 17:50:05 606 3

原创 LeetCode之完全平方数

​根据如上图解,我们可以进一步细化解题步骤:求出n以内的所有完全平方数初始化一个dp数组根据状态转移方程,动态求解每一步的结果1.求出n以内的所有完全平方数# 求出n之内的所有完全平方数 pow_li = [] for i in range(1, n // 2 + 1): cur = i ** 2 if cur ...

2022-07-12 21:54:15 684

原创 我的博客系统开源啦

这是一个基于Django+redis+mysql+uwsgi+nginx的web项目,一个实现了简单crud操作的博客系统,虽然功能和外观都比较简陋,但是“麻雀虽小五脏俱全”,也融入我不少的心血!a.配置文件的修改下载到本地后,切换到config目录下,修改uwsgi和nginx的配置文件1.修改uwsgi的配置文件(uwsgi.ini): 将wsgi-file(wsgi文件的路径),virtualenv(虚拟环境的路径),pythonpath(python解释器的路径)的值修改为在你的设备上的完整路径

2022-07-11 16:53:14 1474 10

原创 为自己的博客系统写的一篇自我介绍

从大一到现在,靠python挣几个w? 本来就对python情有独钟,没想到它对我更是回以满满的爱!记得从大二的时候开始,从学习编程的道友那里知道可以在网上接单,然后给我推荐了boss直聘,说这个比较可靠,我当时一想到可以赚钱,当天就下载了,但是看了半天,基本上没有自己会的(不过最后还是找到了一个,是一个简单的测试,然后编写测试文档(和编程没有半毛钱关系),测一次30元,但是测试了两次,赚了60元),于是后来又自己各种网上查,加了几个那种专门兼职接单的群,一开始还是半信半疑的,后来看群里真有人接单了,..

2022-07-07 21:20:29 1018 4

原创 LeetCode之单词搜索(回溯法求解)

因为前不久刚做过一个走迷宫的问题,所以在读完这题后,就发现它与走迷宫惊奇的相似,只不过在走下一步的时候条件有所改变。但是,它还是花了我2个多接近3个小时才写出来的!,唉,不说了,还是我太菜了。言归正传(菜不能做为我懒惰的理由)首先,不管是走迷宫还是这一题,都得有一个起点,对于这一题,如果一个一个去试的话,那样就太费时了,所以我首先遍历了整个网格,找到和要查找的单词的第一个字母一样的字母的位置: start_pos_li = [] # 记录单词首字母的位置 word_set ...

2022-07-02 22:04:56 1698 2

原创 贪心算法之分数背包

​话说一个小偷在某商店发现有n个商品,第i个商品价值vi元,重wi千克。他希望拿走的价值尽量高,但他的背包最多只能容纳W千克的东西。他应该拿走哪些商品? 分数背包:对于一个商品,小偷可以拿走其中任意一部分。(唉,这年头,小偷也不好当了!)​...

2022-06-29 18:35:22 1289

原创 LeetCode之合并二叉树

# 将二叉树的对应位置进行合并'''三种情况: 1.左子树和右子树都有值,则相加即可 2.左(右)子树有值,右(左)子树无值,则只添加左子树 3.左子树无值,右子树无值,则不添加遍历到任何一颗节点都是这样的,因此可以使用递归,当遍历完当前节点后,可以再分别递归遍历当前节点的左子树和右子树'''...

2022-06-28 22:13:49 170

原创 LeetCode之三步问题

​和青蛙跳台阶一样,首先写出前几步的结果:通过这些结果,可以发现规律:f(n)=f(n-1)+f(n-2)+f(n-3) (n≥3,且f(0)=f(1)=1,f(2)=2),有了这个规律之后,代码就很好写啦!也许,有些小伙伴会说,你怎么知道一上来就知道找规律就可以得到正确的结果的?其实我一开始也不知道,就是抱着尝试的态度去的(因为我之前在做“青蛙跳台阶”的时候学到的这个方法,而这个题目和它非常的相似,所以很容易就类比想到这种方法啦!因此,解题的王道:多做,多总结。)...

2022-06-27 19:47:49 230

原创 leetcode之下载插件(这个运行结果有点瘆人~)

运行通过截图很显然,这种解题方法不管是时间复杂度(2^n)还是空间复杂度(2^n)都非常的高,运行的结果也可想而知,居然通过了!真是万幸哈哈哈哈,不过这个执行时间和内存消耗看着真是吓人!看题解去了~ 同步更新于个人博客系统:leetcode之下载插件(这个运行结果有点瘆人~)...

2022-06-18 21:09:40 216

原创 可达鸭说:好好学习,天天向上~~

先偷偷的告诉大家:这个其实是我的一个课的结课论文,不知道大家能不能猜出来是什么课?效果如下:可达鸭说:好好学习,天天向上!程序下载地址:可达鸭说:好好学习,天天向上!摘要计算机病毒是计算机犯罪的一种新的衍化形式 计算机病毒是高技术犯罪, 具有瞬时性、动态性和随机性。不易取证, 风险小破坏大, 从而刺激了犯罪意识和犯罪活动。是某些人恶作剧和报复心态在计算机应用领域的表现。  计算机是电子产品。数据从输入、存储、处理、输出等环节, 易误入、篡改、丢失、作...

2022-06-12 20:50:23 401

原创 python实现Dijkstra算法求最短路径

最近在考研复习,刚好学到图这一章了,然后也是学到关于图最难的几个部分了,一个是最小生成树(Prim算法和Kruskal算法),还一个就是最短距离问题了(Dijkstra算法和Floyd算法),我感觉前三个算法都还蛮好理解,就是最后一个Floyd有点没整明白,前三个算法基本上都用到贪心的思想,Prim每次都选择当前未使用的消耗最小的顶点(选点);Kruskal每次都是当前未使用的权值最小的边(选边);Dijkstra的思想和Prim的思想大致一直。这里我就直接贴出源码了,python实现的,有兴趣的可以运行试

2022-06-04 19:51:07 3412 2

原创 python实现二叉搜索树

python实现二叉搜索树

2022-06-04 19:29:28 867

原创 广度优先遍历之求两点之间的最短距离

# -*- coding: UTF-8 -*-''' *****************LLL********************* * @Project :leetcode * @File :lll_106求顶点到各个节点的最短路径.py * @IDE :PyCharm * @Author :LLL * @Date ...

2022-05-31 17:44:54 518

原创 python实现线索二叉树(以先序线索化为例)

背景给定一棵树中的某一个节点,让你找出这个节点的先序遍历的直接前驱,如果是一颗普通的树,因为指向的单向性,你只能建立两个指针pre,cur_node,pre紧接在cur_node的后面,从头遍历到尾,如果cur_node指向了要找的节点,那么pre就是要找的节点的直接前驱。可以看到,无论给定的节点在哪里,都需要从根节点开始从头遍历,所以效率是非常低的。节点的定义class TreeNode: def __init__(self, val=None, left=None, rig

2022-05-16 12:26:33 568

原创 python求解迷宫问题,配js实现的走迷宫动画,动起来才有意思~

前言继昨天手动实现了走迷宫问题,虽然是实现了,但是看到被我画成乱七八糟的草稿纸,总是觉得不爽,不仔细看,又得把自己给走迷糊了,于是自己使用js实现了一下,效果还不错!先看一下展示效果吧!(文末配有js实现的代码)js实现走迷宫不同的小方块代表不同的颜色,白色代表未走过的路,灰色代表墙,绿色代表走过的路,红色代表这条路走不通,即“死路”一条~最后的截图:言归正传说说具体的思路吧~核心思想就是:我头铁,我就要一步一步的试!直到杀出一条血路出来,不,不,是试出一条汗路来,(所以悄

2022-05-12 17:12:28 809 2

原创 leetcode之二叉树的层序遍历

题目给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]提示:树中节点数目在范围 [0, 2000] 内-1000 <= Node.val <= 1000通过次数566,503提交次数875,0

2022-05-10 20:36:39 1359

原创 leetcode之合并K个升序链表

题目给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:list...

2022-05-09 20:46:04 163

原创 10大排序算法的性能比较,计数排序简直逆天?

首先先给大家列出每种排序的具体实现(全部都是用python实现的!)# 冒泡排序# 选择排序# 插入排序# 快速排序# 堆排序# 归并排序# 希尔排序# 计数排序# 桶排序# 基数排序测试代码# -*- coding: UTF-8 -*-''' *****************LLL********************* * @Project :排序算法 * @File :lll13_十大排序

2022-05-09 12:18:29 1248 3

原创 python实现基数排序

思路先比较个位数,得到一个新的序列;再按照十位数排序,在上一个新序列的基础上又得到一个新的序列;然后再按照百位数排序,在上一个新序列的基础上又得到一新的序列;只到排到所有数中的最高位,依次输出列表,排序结束。栗子例:li=[12,90,4,894,66]可以看到,最高位有百位,因此我们可以将li看成是[012,090,004,894,066]###################################################################

2022-05-09 11:50:17 598

原创 python实现桶排序,听这名字挺奇怪的?

前言不知道大家还记不记得计数排序 在计数排序中,需要根据最大值和最小值创建一个列表,如果最大值和最小值的差很大,即使需要排序的数据并不是很多,那么就会照成不必要的浪费,因为不管需要排序的数有多少,都需要创建一个长度为(最大值-最小值+1)的列表桶排序的由来鉴于上面这一点,我们可以进行分块排序,每一块用一个列表来表示(每一个列表都用来存放对应区间的数),将这个列表看成是一个桶(这也是为什么叫桶排序),将某个数放到对应的桶中,最后合并这些桶就得到了有序的序列。栗子

2022-05-07 11:02:46 435

原创 python实现希尔排序(选择排序的进一步优化)

def insert_sort(li, gap): li_len = len(li) for i in range(gap, li_len): # 无序区[i,li_len) j = i - gap # 有序区的索引 tmp = li[i] while j >= 0 and tmp < li[j]: # 只要当前抽到的元素小于有序区中的元素,有效区中的元素就后移gap位 li[j + gap] =.

2022-05-07 09:48:01 415

原创 python100行代码实现的整蛊小游戏

话不多说,直接看效果!整蛊小游戏源码总共有两个文件:Surprise.py和res2.pySurprise.py的内容如下:from base64 import b64decodefrom time import sleepimport tkinter as tkfrom random import choice, randrangefrom threading import Threadfrom playsound import playsound...

2022-05-06 21:55:26 1852 4

原创 python实现计数排序——最简单的排序方式,没有之一?

前言和前面说的冒泡排序,选择排序,插入排序,快速排序,堆排序,归并排序,希尔排序相比,它们都是比较排序,在排序的过程中,都需要进行元素之间的比较,而今天的计数排序就不需要了。思路通过名称可以知道它的核心体现在计数,其实就是记录每一个数字出现的频率,但是得提前确定所有数字的区间,即得知道最大值和最小值,才能保证不会有遗漏。举例这里给出的需要排序的列表是:[1,2,6,2,3,1,4,4,5],所以最大值是6,最小值是1我在这里从0开始,依次列出区间内所有的数字,即:0,1,..

2022-05-05 15:36:14 805 2

原创 python实现归并排序

一次归并'''#一次归并操作如下:假设有一个列表,从某个位置切开,得到的两段都是有序的,则可以进行如下的排序:例: li=[2,3,4,0,1]从index=2开始,[2,3,4]和[0,1]都是有序的现设指针:low mid high low:指向0,左边列表的起始位置 mid:指向2,左边列表的结束位置(mid+1就是右边列表的起始位置,所以不需要额外设置) high:指向4,右边列表的结束位置临时列表li_tmp=[]从low和

2022-05-04 11:26:39 392

原创 python实现堆排序及topk问题

堆排序​# 思路'''1.构造堆2.挨个出数(每次选出一个最大(小)的数)时间复杂度:nlogn'''# 构造堆def sift(li, low, high): ''' :param li:列表 :param low:堆的根节点 :param high:堆的最后一个叶子节点 :return: ''' i = low # i最开始指向根节点 j = 2 * i + 1 # j一开始指向i的左孩子 tmp

2022-05-04 11:24:43 473

原创 LeetCode之剑指 Offer II 091. 粉刷房子,理解这一张图就够了?

题目假如有一排房子,共 n 个,每个房子可以被粉刷成红色、蓝色或者绿色这三种颜色中的一种,你需要粉刷所有的房子并且使其相邻的两个房子颜色不能相同。当然,因为市场上不同颜色油漆的价格不同,所以房子粉刷成不同颜色的花费成本也是不同的。每个房子粉刷成不同颜色的花费是以一个 n x 3 的正整数矩阵 costs 来表示的。例如,costs[0][0] 表示第 0 号房子粉刷成红色的成本花费;costs[1][2] 表示第 1 号房子粉刷成绿色的花费,以此类推。请计算出粉刷完所有房子最少的花费成本。

2022-05-04 09:24:40 257

原创 以爬虫为例,单线程,协程,线程,进程之间性能的比较,原来协程可以这么快?

前言因为刚刚学习到了协程,然后之前也对爬虫有一定的了解,所以打算结合之前学的线程和进程,和协程进行对比,看看它的性能到底有多高,在测试完成后,结果还是不错的!下面就直接上代码了,因为代码逻辑都比较简单,我就不一一解释了,重点是看测试结果,真的很让人兴奋!!!案例我这里以爬取一个网站上的所有国家的旗帜为例。(下图为爬取结果,共192张)分别利用了单线程,协程,多线程,多进程进行爬取测试。线程的效率真的已经很高了,但是协程居然比它还高!!!定位旗帜的url我这里使用的xpath对

2022-05-01 21:20:04 737

原创 室友1把王者的时间写出了快速排序?(python实现)

前言"欢迎来到王者荣耀,敌军还有5秒钟达到战场!请做好准备!"战争的号角已吹响!本次我方上场的英雄有:小鲁班,诸葛亮,廉颇,韩信,后羿。还没走出泉水,机智的诸葛亮就率先提出作战策略:游戏可以输,姿势一定要帅!看咱现在这站位,高高低低,乘次不齐,一点排面都没有!韩信也马上补充道:“没错!你看这个廉颇,又矮又胖,他还站在C位,你说这像话吗???”(此时,站在一旁的小鲁班悄悄地想旁边挪了一下)憨厚的廉颇:我 我。。。诸葛亮扶了扶眼镜框马上补充道:在座的各位,..

2022-04-29 12:39:32 2364

原创 python实现插入排序

思路'''假设有一个有序区(一开始只有一个元素),依次在无序区中选择一个元素将其按照大小插入到有序区中,直到所有无序区的元素都插入到有序区,排序结束时间复杂度:O(n²)'''@clockeddef insert_sort(li): li_len = len(li) for i in range(1, li_len): # 无序区[i,li_len) j = i - 1 # 有序区的索引 tmp = li[i]

2022-04-28 19:15:25 354

原创 python实现选择排序

思路# 思路:每次选择出列表中的最大(小)值,然后将其从列表中移除,并将移除的值依次排列基础版@clockeddef select_sort(li): li_len = len(li) new_li = [] for i in range(li_len): # 选出最小元素 min_val = min(li) # 删除这个元素 li.remove(min_val) # 将这个元素添加

2022-04-28 18:23:06 308

原创 别小瞧冒泡排序,优化一下不也挺快的嘛?(python实现)

基础版# 冒泡排序def bubble_sort(li): li_len = len(li) for i in range(li_len - 1): for j in range(i + 1, li_len): if li[i] > li[j]: # 只要当前数字比下一个大,就将它向上移动 li[i], li[j] = li[j], li[i]优化版一# 优化:是不是每一次都要比较到末尾?'

2022-04-27 18:50:12 397

原创 上下文管理器和with块

文章目录前言 一、上下文管理器是什么? 二、使用步骤 1.上下文管理器的实现方案一 2.上下文管理器的实现方案二 总结前言相信很多小伙伴在对文件操作,或者锁的操作时会经常用到with语句,因为使用它给我们带来了极大的便利,比如在文件操作中,使用它,你再也不用担心你的文件在使用完成后没有关闭;在锁的操作,你也再也不用担心开了一把锁而忘记关闭造成死锁等现象...总之,它会给你做好一切“善后”的事情哈哈哈哈(这个比喻可能不是那么恰当)提示:以下是本篇文章正文内容,下面案

2022-04-23 16:53:17 488

原创 else用法的一个小细节

前言在python中,大多数情况下,else都是配合if语句使用的,逻辑很简单,如果if的条件满足就执行if中的子句,否者(else)执行else中的。但是偶然也看到配合循环语句使用的else比如下面这两个栗子:# 循环只有正常结束才会执行elsefor i in range(10): print(i)else: print('循环正常结束!')i = 0while True: print(i) i += 1 if i > 2

2022-04-23 16:20:14 718

原创 leetcode之组合总和(动态规划求解)

题目描述:给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例 1:输入:candidates = [2,3,6,7],

2022-04-18 21:25:24 1045

原创 python中iter()的高阶用法

前言众所周知,在python中,iter()函数的功能是:接受一个可迭代对象,将其转换成一个迭代器。举个栗子:a=[1,2,3]a_iter=iter(a)print(a_iter)print(next(a_iter))print(next(a_iter))上面就是iter()的一般用法。iter()的高阶用法但是,iter()还有一个更好玩的用法!简单做一下描述:传入两个参数:使用常规的函数或者任何可调用的对象创建迭代器。这样使用时,第一个参数必须是可调用的对象

2022-04-18 10:33:50 5881

原创 python中可迭代的归约函数,功能这么强,你能不爱? ? ?

相信学习python的小伙伴都用过这些函数,但是它们的功能真的太强了,还是忍不住把它们总结记录一下!!!import functoolsimport itertools# 归约函数:接受一个可迭代对象,然后返回单个结果的函数。# all(it)# it中的所有元素都为真时返回True,否者返回Falseprint(all(range(10))) # 因为出现了0,所以返回False# any(it)# 只有有一个元素是True就返回True,否者返回Falseprint(any

2022-04-18 10:16:33 227

原创 python3.3中出现的新语法:yield from,有点强?

前言我们知道,一个函数中,如果出现了yield关键字,那么它一定是一个生成器函数!那yield from又是个啥?不知道小伙伴有没有看过我上一篇的:标准库中的生成器函数,其中就讲到过一个生成器函数:itertools.chain(),它的功能就是将多个可迭代对象无缝连接在一起!功能看上去不是很复杂,要不我们自己实现一下试试?# 例:自己实现chaindef my_chain(*iterable): for it in iterable: for i i

2022-04-18 10:07:47 282

原创 python标准库中的24个生成器函数,个个都超级厉害,你用过几个?

前言标准库提供了很多生成器,有些是内置的,有些在itertools和functools模块中,下面我们就按照它们的功能进行分组来看看它们吧!用于过滤的生成器函数import itertools# itertools.compress(it,selector_it)# 并行处理两个可迭代对象,如果selector_it中的元素是真值,产出it中对应的元素print([i for i in itertools.compress(range(10), [0, 0, 1, 1])])#

2022-04-18 09:45:18 899

原创 《流畅的python》学习笔记之可迭代的对象,迭代器和生成器

前言可迭代对象,迭代器,生成器,不知道大家第一眼看到这几个名词的时候,有没有一种很熟悉的感觉,然后在脑子里飞速找寻这几个词之间的差异,但是找了半天,似乎没有找到,并且让原本清晰的概念变得模糊了。反正我一开始有这种感觉,不过现在看完这一章的内容,好像还是有点晕哈哈哈,不过还是乘热打铁,在复习巩固一边,应该会清晰一点!首先我们来看一下各自的定义,这里我会参考书上的内容然后结合自己的理解来定义这三者。可迭代对象首先我们可以问这样一个问题:什么是可迭代对象?这个可能比较抽象不好理

2022-04-18 09:28:23 383

个人博客系统请求日志。

个人博客系统请求日志。

2022-07-07

整蛊小游戏的资源文件。

整蛊小游戏的资源文件

2022-05-06

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除