- 博客(311)
- 资源 (1)
- 收藏
- 关注
原创 C++数组中重复的数字
对于这种数组元素在 [0, n-1] 范围内的问题,可以将值为 i 的元素调整到第 i 个位置上进行求解。在调整过程中,如果第 i 位置上已经有一个值为 i 的元素,就可以知道 i 值重复。在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。要求时间复杂度 O(N),空间复杂度 O(1)。因此不能使用排序的方法,也不能使用额外的标记数组。
2023-11-23 10:00:00 255
原创 C++二维数组中的查找
该二维数组中的一个数,小于它的数一定在其左边,大于它的数一定在其下边。因此,从右上角开始查找,就可以根据 target 和当前元素的大小关系来快速地缩小查找区间,每次减少一行或者一列的元素。当前元素的查找区间为左下角的所有元素。给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。要求时间复杂度 O(M + N),空间复杂度 O(1)。其中 M 为行数,N 为 列数。
2023-11-23 06:45:00 296
原创 Python学习笔记--过解决一个需求问题来了解闭包
闭包的过程其实好比类(父函数)生成实例(闭包),不同的是父函数只在调用时执行,执行完毕后其环境就会释放,而类则在文件执行时创建,一般程序执行完毕后作用域才释放,因此对一些需要重用的功能且不足以定义为类的行为,使用闭包会比使用类占用更少的资源,且更轻巧灵活。那是因为,在 Python 中,如果一个函数使用了和全局变量相同的名字且改变了该变量的值,那么该变量就会变成局部变量,那么就会造成在函数中我们没有进行定义就引用了,所以会报该错误。属性,如果函数是闭包的话,那么它返回的是一个由 cell 组成的元组对象。
2023-11-22 13:30:00 191
原创 Python学习笔记--通过慢慢演变一个需求,一步一步来了解 Python 装饰器
这样改是可以,可是这样改是改变了函数的功能结构的,本身这个函数定义的时候就是打印某个员工的信息和提示打卡成功,现在增加打印日期的代码,可能会造成很多代码重复的问题。有的,就是本文要介绍的装饰器,因为装饰器的写法其实跟闭包是差不多的,不过没有了自由变量,那么这里直接给出上面那段代码的装饰器写法,来对比一下,装饰器的写法和函数式编程有啥不同。那么这就很方便了,方便在我们的调用上,比如例子中的,使用了装饰器后,直接在原本的函数上加上装饰器的语法糖就可以了,本函数也无虚任何改变,调用的地方也不需修改。
2023-11-21 10:30:00 108
原创 Python学习笔记--re.match 和 re.search
最后,正则表达式是非常厉害的工具,通常可以用来解决字符串内置函数无法解决的问题,而且正则表达式大部分语言都是有的。最后,附送一些常用的正则表达式和正则表达式和 Python 支持的正则表达式元字符和语法文档。而 re.search 匹配整个字符串,直到找到一个匹配。看下下面的实例,可以对比下 re.search 和 re.findall 的区别,还有多分组的使用。re.match 和 re.search 在网上有很多详细的介绍了,可是再个人的使用中,还是喜欢使用 re.findall。
2023-11-20 19:00:00 36
原创 Python学习笔记--数量词
贪婪模式:它的特性是一次性地读入整个字符串,如果不匹配就吐掉最右边的一个字符再匹配,直到找到匹配的字符串或字符串的长度为 0 为止。数量词的词法是:{min,max}。懒惰模式:它的特性是从字符串的左边开始,试图不读入字符串中的字符进行匹配,失败,则多读一个字符,再匹配,如此循环,当找到一个匹配时会返回该匹配的字符串,然后再次进行匹配直到字符串结束。来,继续加深对正则表达式的理解,这部分理解一下数量词,为什么要用数量词,想想都知道,如果你要匹配几十上百的字符时,难道你要一个一个的写,所以就出现了数量词。
2023-11-20 11:00:00 109
原创 Python学习笔记--字符集
在例子中,使用了取反字符集,也就是在左方括号 “[” 后面紧跟一个尖括号 “^”,就会对字符集取反。,就是所有小写字母中的其中一个,这里使用了连字符 “-” 定义一个连续字符的字符范围。好了,通过上面的几个实例我们初步认识了 Python 的正则表达式,可能你就会问,正则表达式还有什么规则,什么字母代表什么意思呢?注意了,字符和范围定义的先后顺序对匹配的结果是没有任何影响的。,匹配所有数字字符,其实它是等价于 [0-9],下面也写了个例子,通过字符集的形式解释了这些特殊字符。举个例子,比如你使用。
2023-11-19 12:30:00 81
原创 Python学习笔记--初识 Python 正则表达式
而且上面例子中的正则表达式设置成为了一个常量,并不是一个正则表达式的规则,正则表达式的灵魂在于规则,所以这样做意义不大。从输出结果可以看到,可以实现和内置函数一样的功能,可是在这里也要强调一点,上面这个例子只是方便我们理解正则表达式,这个正则表达式的写法是毫无意义的。正则表达式是一个特殊的字符序列,用于判断一个字符串是否与我们所设定的字符序列是否匹配,也就是说检查一个字符串是否与某种模式匹配。先不急,我们一步一步来,先来一个简单的,找出字符串中的所有小写字母。函数中第一个参数写正则表达式的规则,其中。
2023-11-19 10:30:00 79
原创 Python学习笔记--进程
Python 中的多线程其实并不是真正的多线程,如果想要充分地使用多核 CPU 的资源,在 Python 中大部分情况需要使用多进程。Python 提供了非常好用的多进程包 multiprocessing,只需要定义一个函数,Python 会完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。multiprocessing 支持子进程、通信和共享数据、执行不同形式的同步,提供了 Process、Queue、Pipe、Lock 等组件。
2023-11-18 15:30:00 71
原创 Python学习笔记--Python关键字yield
原文:http://stackoverflow.com/questions/231767/the-python-yield-keyword-explained注:这是一篇 stackoverflow 上一个火爆帖子的译文。
2023-11-17 10:06:59 311
原创 Python学习笔记--线程与进程
同时执行多个任务通常各个任务之间并不是没有关联的,而是需要相互通信和协调,有时,任务 1 必须暂停等待任务 2 完成后才能继续执行,有时,任务 3 和任务 4 又不能同时执行,所以,多进程和多线程的程序的复杂度要远远高于我们前面写的单进程单线程的程序。当然,一个进程也可以有多个线程,多个线程可以同时执行,多线程的执行方式和多进程是一样的,也是由操作系统在多个线程之间快速切换,让每个线程都短暂地交替运行,看起来就像同时执行一样。一种是启动多个进程,每个进程虽然只有一个线程,但多个进程可以一块执行多个任务。
2023-11-17 09:50:02 66
原创 Python学习笔记--自定义元类
当然了,为了清晰起见,这里的名字我起的比较长。属性,如果找到了,Python 就会用它来创建类 MyObject,如果没有找到,就会用内建的 type 函数来创建这个类。如果使用 super 方法的话,我们还可以使它变得更清晰一些,这会缓解继承(是的,你可以拥有元类,从元类继承,从 type 继承)采用这种方法,这个模块中的所有类都会通过这个元类来创建,我们只需要告诉元类把所有的属性都改成大写形式就万事大吉了。当我们定义了类以后,就可以根据这个类创建出实例,所以:先定义类,然后创建实例。
2023-11-17 09:49:11 70
原创 Python学习笔记--什么是元类
这可能是为了和 str 保持一致性,str 是用来创建字符串对象的类,而 int 是用来创建整数对象的类。通过上面的介绍,终于模模糊糊的带到元类这里来了。可以看到,上面的所有东西,也就是所有对象都是通过类来创建的,那么我们可能会好奇,也可以说是他们类的类打印结果。Python 中所有的东西,注意喔,这里是说所有的东西,他们都是对象。我们创建类的时候,大多数是为了创建类的实例对象。你也可以理解为,元类就是负责生成类的。也就是元类就是负责创建类的一种东西。一开始也提到了,元类就是类的类。
2023-11-12 16:30:00 98
原创 Python 中类也是对象
当程序运行这段代码的时候,就会在内存中创建一个对象,名字就是ObjectCreator。这个对象(类)自身拥有创建对象(类实例)的能力,而这就是为什么它是一个类的原因。在了解元类之前,我们先进一步理解 Python 中的类,在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。但是,Python 中的类有一点跟大多数的编程语言不同,在 Python 中,可以把类理解成也是一种对象。对的,这里没有写错,就是对象。,Python 解释器在执行的时候就会创建一个对象。
2023-11-11 18:45:00 78
原创 Python学习笔记--自定义类型的枚举
通过上面的例子,可以知道枚举模块定义了具有迭代 (interator) 和比较(comparison) 功能的枚举类型。它可以用来为值创建明确定义的符号,而不是使用具体的整数或字符串。但有些时候我们需要控制枚举的类型,那么我们可以 Enum 派生出自定义类来满足这种需要。
2023-11-11 12:45:00 89
原创 Python学习笔记--枚举类的使用
上面的代码,我们创建了一个有关月份的枚举类型 Month ,这里要注意的是构造参数,第一个参数 Month 表示的是该枚举类的类名,第二个 tuple 参数,表示的是枚举类的值;这时候我们定义一个 class 类型,每个常量都是 class 里面唯一的实例。类型的常量,默认是从 1 开始的。当然这样做简单快捷,缺点是类型是。遍历它的所有成员的方法。那有没有什么好的方法呢?来定义了一个枚举类。
2023-11-10 11:15:00 67
原创 Python学习笔记--自定义容器(Container)
经过之前编章的介绍,我们知道在 Python 中,常见的容器类型有: dict, tuple, list, string。其中也提到过可容器和不可变容器的概念。其中 tuple, string 是不可变容器,dict, list 是可变容器。可变容器和不可变容器的区别在于,不可变容器一旦赋值后,不可对其中的某个元素进行修改。当然具体的介绍,可以看回之前的文章,有图文介绍。不够的时候,或者说有些特殊的需求不能单单只使用这些基本的容器解决的时候,该怎么办呢?这个时候就需要自定义容器了,那么具体我们该怎么做呢?
2023-11-09 16:00:00 143
原创 Python学习笔记--对象的描述器
在面向对象编程时,如果一个类的属性有相互依赖的关系时,使用描述器来编写代码可以很巧妙的组织逻辑。在之前的篇节中已经提到新式类和旧式类的,有兴趣可以查看之前的篇节来看看,至于新式类最大的特点就是所有类都继承自 type 或者 object 的类。的父类 ( 不包括元类 (metaclass) ).如果查找到的值是一个描述器, Python 就会调用描述器的方法来重写默认的控制行为。一般来说,一个描述器是一个有“绑定行为”的对象属性 (object attribute),它的访问控制被描述器协议方法重写。
2023-11-09 11:00:00 106
原创 Python学习笔记--属性的访问控制
之前也有讲到过,Python 没有真正意义上的私有属性。然后这就导致了对 Python 类的封装性比较差。我们有时候会希望 Python 能够定义私有属性,然后提供公共可访问的 get 方法和 set 方法。Python 其实可以通过魔术方法来实现封装。
2023-11-08 16:00:00 158
原创 Python学习笔记--构造(`__new__`)和初始化(`__init__`)
通过之前的学习,我们已经知道定义一个类时,我们经常会通过 的方法在实例化对象的时候,对属性进行设置。比如下面的例子:实际上,创建一个类的过程是分为两步的,一步是创建类的对象,还有一步就是对类进行初始化。 是用来创建类并返回这个类的实例, 而 只是将传入的参数来初始化该实例. 在创建一个实例的过程中必定会被调用,但 就不一定,比如通过 pickle.load 的方式反序列化一个实例时就不会调用 方法。 是在 方法之前调用的,作用是返回一个实例对象。还有一点需要注意的是: 方法总是需要返回该类的一个实
2023-11-08 11:00:00 107
原创 Python学习笔记--模块简介
我们可以尝试找下这些模块,比如我的 Python 安装目录是默认的安装目录,在 C:\Users\Administrator\AppData\Local\Programs\Python\Python36 ,然后找到 Lib 目录,就可以发现里面全部都是模块,没错,这些。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。通过上面的定义,不难发现,函数和模块都是用来实现功能的,只是模块的范围比函数广,在模块中,可以有多个函数。
2023-11-07 16:00:00 217 2
原创 Python学习笔记--类的访问控制
在 Java 中,有 public (公共)属性 和 private (私有)属性,这可以对属性进行访问控制。那么在 Python 中有没有属性的访问控制呢?一般情况下,我们会使用两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时。为什么只能说一般情况下呢?因为实际上, Python 中是没有提供私有属性等功能的。但是 Python 对属性的访问控制是靠程序员自觉的。为什么这么说呢?看看下面的示例:仔细看图片,为什么说双下划线不是真正的私有属性呢?
2023-11-07 11:00:00 208
原创 Python学习笔记--类的多态
可以看到,userVip 和 userGeneral 是两个不同的对象,对它们调用 printUserInfo 方法,它们会自动调用实际类型的 printUser 方法,作出不同的响应。多态的概念其实不难理解,它是指对不同类型的变量进行相同的操作,它会根据对象(或类)类型的不同而表现出不同的行为。可以看到,我们对两个整数进行 + 操作,会返回它们的和,对两个字符进行相同的 + 操作,会返回拼接后的字符串。要注意喔,有了继承,才有了多态,也会有不同类的对象对同一消息会作出不同的相应。
2023-11-06 16:40:01 89
原创 Python学习笔记--类的继承
说到继承,你一定会联想到继承你老爸的家产之类的。类的继承也是一样。比如有一个旧类,是可以算平均数的。然后这时候有一个新类,也要用到算平均数,那么这时候我们就可以使用继承的方式。新类继承旧类,这样子新类也就有这个功能了。通常情况下,我们叫旧类为父类,新类为子类。在定义类的时候,可以在括号里写继承的类,如果不用继承类的时候,也要写继承 object 类,因为在 Python 中 object 类是一切类的父类。
2023-11-06 16:39:26 161
原创 Python学习笔记--初始化函数
usr/bin/env python # -*- coding: UTF-8 -*- # 旧式类 class OldClass : pass # 新式类 class NewClass(object) : pass可以看到,这里使用了两者中不同的方式定义类,可以看到最大的不同就是,新式类继承了object类,在 Python2 中,我们定义类的时候最好定义新式类,当然在 Python3 中不存在这个问题了,因为 Python3 中所有类都是新式类。那么新式类和旧式类有什么区别呢?# 旧式类# 新式类。
2023-10-29 13:00:00 1380
原创 Python学习笔记--类和对象
这部分内容主要讲类和对象,我们先来说说类和对象之间的关系。我们得先有了类,才能制作出对象。类就相对于工厂里面的模具,对象就是根据模具制造出来的产品。
2023-10-29 08:45:00 92
原创 Python学习笔记--类的定义和调用
知道了类是什么样子的,我们接下来就要学习怎么去定义类了。可以看到,我们是用class语句来自定义一个类的,其实这就好比我们是用def语句来定义一个函数一样。竟然说类是变量和方法的集合包,那么我们来创建一个类。var1 = 100var3 = '两点水'print('我是 fun1')print('我是 fun1')print('我是 fun1')你看,上面我们就定义了一个类,类名叫做ClassA, 类里面的变量我们称之为属性,那么就是这个类里面有 3 个属性,分别是var1var2和var3。
2023-10-28 13:15:00 347
原创 Python学习笔记--面向对象的概念
编程语言中,一般有两种编程思维,面向过程和面向对象。面向过程,看重的是解决问题的过程。这好比我们解决日常生活问题差不多,分析解决问题的步骤,然后一步一步的解决。而面向对象是一种抽象,抽象是指用分类的眼光去看世界的一种方法。Python 就是一门面向对象的语言,如果你学过 Java ,就知道 Java 的编程思想就是:万事万物皆对象。Python 也不例外,在解决实际问题的过程中,可以把构成问题事务分解成各个对象。面向对象都有两个基本的概念,分别是类和对象。
2023-10-28 09:30:00 57
原创 Python学习笔记--生成器
通过上面的学习,可以知道列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含 1000 万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。这样就不必创建完整的 list,从而节省大量的空间。在 Python 中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
2023-10-27 13:00:00 152
原创 Python学习笔记--list 生成式(列表生成式)
之前经过我们的学习,都知道如何创建一个 list ,可是有些情况,用赋值的形式创建一个 list 太麻烦了,特别是有规律的 list ,一个一个的写,一个一个赋值,太麻烦了。比如要生成一个有 30 个元素的 list ,里面的元素为 1 - 30。但是,如果用到 list 生成式,可以一句代码就生成九九乘法表了。你没听错,就是一句代码。不过,这里我们先要了解如何创建 list 生成式。
2023-10-27 12:15:00 131
原创 Python学习笔记---Python 迭代器
迭代器有两个基本的方法:iter() 和 next(),且字符串,列表或元组对象都可用于创建迭代器,迭代器对象可以使用常规 for 语句进行遍历,也可以使用 next() 函数来遍历。上面简单的介绍了一下迭代,迭代是 Python 最强大的功能之一,是访问集合元素的一种方式。现在正式进入主题:迭代器,迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
2023-10-26 14:45:00 49
原创 Python学习笔记--迭代
比如在 Java 中,我们通过 List 集合的下标来遍历 List 集合中的元素,在 Python 中,给定一个 list 或 tuple,我们可以通过 for 循环来遍历这个 list 或 tuple ,这种遍历就是迭代。循环不仅可以用在 list 或tuple 上,还可以作用在其他可迭代对象上。也就是说,只要是可迭代的对象,无论有没有下标,都是可以迭代的。循环的,为什么这么说呢?因为 Python 的。循环抽象程度要高于 Java 的。可是,Python 的。
2023-10-25 16:00:00 90
原创 Python学习--匿名函数
python 使用 lambda 来创建匿名函数,也就是不再使用 def 语句这样标准的形式定义一个函数。你会认为输出什么呢?的形式去写一个那么长的函数,那么有没有快捷方式呢?有没有想过定义一个很短的回调函数,但又不想用。
2023-10-25 09:45:00 63
原创 Python学习--函数传值问题
创建了一个整形对象 1 ,变量 b 指向了这个对象,然后通过函数 chagne_number 时,按传值的方式复制了变量 b ,传递的只是 b 的值,并没有影响到 b 的本身。如fun(a),传递的只是 a 的值,没有影响 a 对象本身。其实就是再生成一个整形对象 1000,然后改变 a 的指向,不再指向整形对象 1 ,而是指向 1000,最后 1 会被丢弃。则是将 list a 的第三个元素值更改,这里跟上面是不同的,并不是将 a 重新指向,而是直接修改 list 中的元素值。因此,在一开始的例子中,
2023-10-24 16:00:00 82
原创 Python学习--函数返回值
回忆一下,元组是可以直接用逗号来创建的,观察例子中的 ruturn ,可以发现实际上我们使用的是逗号来生成一个元组。不知道此刻你还记不记得元组的相关知识,如果不记得,建议现在立刻写几个例子回忆一下,比如如何获取元组的第一个元素出来。Python 语言中的函数返回值可以是多个,而其他语言都不行,这是Python 相比其他语言的简便和灵活之处。认真观察就可以发现,尽管从第一个输出值来看,返回了多个值,实际上是先创建了一个元组然后返回的。如果参数类型不对,会报错,提示。这个示例,还通过内置函数。
2023-10-24 11:45:00 67
目标检测数据集-道路危化品运输车辆及普通安全车辆检测数据集5100张(含voc、yolo两种格式标签,直接使用).zip
2024-04-26
数据库的大作业基于c#开发的游戏评分推荐系统源码.zip
2024-04-21
后端架构选型及应用场景.md
2024-04-21
DMS项目驾驶员喝水行为识别数据集(2300多张真实场景照片).zip
2024-04-03
经典C语言面试题.7z
2024-03-29
模拟电子技术PPT资料.zip
2024-03-29
适用于YOLOv5YOLOv8YOLOv9系列算法的裂纹裂缝检测分割数据集(含标签文件,已划分,直接用).zip
2024-03-29
python3.7-python3.8-python3.9-python3.10对应的dlib安装包.whl.zip
2024-03-26
python实现快速排序源码
2024-03-20
凯撒密码加密和解密python实现源码.zip
2024-03-20
基于vue编写的一些自定义bpmn.js案例-基础篇.zip
2024-03-18
基于javascript 的 web video插件.zip
2024-03-18
C语言基础知识总结.zip
2024-03-17
快速幂+相关知识点.zip
2024-03-17
Python 进行数据分析.zip
2024-03-14
RC低通滤波器的时域分析.zip
2024-03-14
devc安装包(好用).zip
2024-03-13
Redis面试题汇总.zip
2024-03-13
2022-2023第2学期Javaee企业级开发作业.pdf
2024-03-12
蓝桥杯题库爬虫源码.zip
2024-03-08
美赛备战学习资料及源码.zip
2024-03-08
智能车自动导航.zip
2024-03-08
电赛項目老人健康监测智能手表.zip
2024-03-08
基于SQL的教务管理系统源码.zip
2024-03-08
example-callback.php
2024-03-08
基于scratch实现的时钟.zip
2024-03-08
大创经验分享与总结.zip
2024-03-08
ACM比赛赛资料汇总.zip
2024-03-08
计算机二级公共基础知识.zip
2024-03-08
JavaScript火灾监测系统.7z
2024-03-08
基于Go实现的个人记账系统源码.zip
2024-03-08
Rust 语言基础语法大全.zip
2024-03-08
基于C#实现寻宝游戏.zip
2024-03-08
VisualBasic学习案例适合小白入门进阶.zip
2024-03-08
delphi教程图文版-新手学习资料.zip
2024-03-08
yolov3python源码(pytorch版本)+项目说明.zip
2024-03-08
21个项目玩转深度学习-基于TensorFlow的实践详解(含项目链接).zip
2024-03-08
课程作业在线机器学习.zip
2024-03-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人