-
BF算法 串模式匹配算法 C语言解说
所属栏目:[语言] 日期:2022-07-07 热度:144
串的模式匹配算法,通俗地理解,是一种用来判断两个串之间是否具有主串与子串关系的算法。 主串与子串:如果串 A(如 shujujiegou)中包含有串 B(如 ju),则称串 A 为主串,串 B 为子串。主串与子串之间的关系可简单理解为一个串 包含 另一个串的关系。[详细]
-
什么叫做数组存储结构
所属栏目:[语言] 日期:2022-07-07 热度:128
前面学习数据结构的过程中,总是使用数组作为顺序表的底层实现,给我们一种 数据结构中,数组的作用就是实现顺序表 的错误认识。其实,数组的作用远不止于此。 本节将从数据结构的角度讲解数组存储结构。 本节所讲的数组,要将其视为一种存储结构,与平时[详细]
-
数组的排序存储 C语言版
所属栏目:[语言] 日期:2022-07-07 热度:118
数组作为一种线性存储结构,对存储的数据通常只做查找和修改操作,因此数组结构的实现使用的是顺序存储结构。 要知道,对数组中存储的数据做插入和删除操作,算法的效率是很差的。 通过以上内容,我们掌握了将多维数组存储在一维内存空间的方法。那么,后[详细]
-
矩阵 稀疏矩阵 压缩存储 3种方案
所属栏目:[语言] 日期:2022-07-07 热度:146
数据结构中,提供针对某些特殊矩阵的压缩存储结构。 矩阵中有两条对角线,其中的对角线称为主对角线,另一条从左下角到右上角的对角线为副对角线。对称矩阵指的是各数据元素沿主对角线对称的矩阵。 结合数据结构压缩存储的思想,我们可以使用一维数组存储[详细]
-
三元组顺序表 稀疏矩阵的三元组表示及 C语言 做成
所属栏目:[语言] 日期:2022-07-07 热度:191
本节介绍稀疏矩阵的三元组顺序表压缩存储方式。 通过《矩阵的压缩存储》一节我们知道,稀疏矩阵的压缩存储,至少需要存储以下信息: 矩阵中各非 0 元素的值,以及所在矩阵中的行标和列标; C 语言中,三元组需要用结构体实现,如下所示: //三元组结构体 t[详细]
-
行逻辑链接的顺序表 压缩存储稀疏矩阵 细说
所属栏目:[语言] 日期:2022-07-07 热度:106
前面学习了如何使用三元组顺序表存储稀疏矩阵,其实现过程就是将矩阵中各个非 0 元素的行标、列标和元素值以三元组的形式存储到一维数组中。通过研究实现代码你会发现,三元组顺序表每次提取指定元素都需要遍历整个数组,运行效率很低。 本节将学习另一种[详细]
-
十字链表法 十字链表压缩存储稀疏矩阵解析
所属栏目:[语言] 日期:2022-07-07 热度:78
对于压缩存储稀疏矩阵,无论是使用三元组顺序表,还是使用行逻辑链接的顺序表,归根结底是使用数组存储稀疏矩阵。介于数组 不利于插入和删除数据 的特点,以上两种压缩存储方式都不适合解决类似 向矩阵中添加或删除非 0 元素 的问题。 例如,A 和 B 分别为[详细]
-
Python lambda表达式 匿名函数 和用法
所属栏目:[语言] 日期:2022-07-07 热度:148
对于定义一个简单的函数,Python 还提供了另外一种方法,即使用本节介绍的 lambda 表达式。 lambda 表达式,又称匿名函数,常用来表示内部仅包含 1 行表达式的函数。如果一个函数的函数体仅有 1 行表达式,则该函数就可以用 lambda 表达式来代替。 lambda[详细]
-
Python eval 和exec 函数解说
所属栏目:[语言] 日期:2022-07-07 热度:54
eval() 和 exec() 函数都属于 Python 的内置函数,由于这两个函数在功能和用法方面都有相似之处,所以将它们放到一节进行介绍。 eval() 和 exec() 函数的功能是相似的,都可以执行一个字符串形式的 Python 代码(代码以字符串的形式提供),相当于一个 Pyt[详细]
-
何为面向对象 Python面向对象 一切皆对象
所属栏目:[语言] 日期:2022-07-07 热度:178
读者肯定听过 Python 中一切皆对象的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言,本节将向大家详细介绍 Python 面向对象的含义。 面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵[详细]
-
Python class 定义类 进门必读
所属栏目:[语言] 日期:2022-07-07 热度:84
前面章节中已经提到,类仅仅充当图纸的作用,本身并不能直接拿来用,而只有根据图纸造出的实际物品(对象)才能直接使用。因此,Python 程序中类的使用顺序是这样的: 创建(定义)类,也就是制作图纸的过程; 创建类的实例对象(根据图纸造出实际的物品)[详细]
-
Python __init__ 类构造方式
所属栏目:[语言] 日期:2022-07-07 热度:91
在创建类时,我们可以手动添加一个 __init__() 方法,该方法是一个特殊的类实例方法,称为构造方法(或构造函数)。 构造方法用于创建对象时使用,每当创建一个类的实例对象时,Python 解释器都会自动调用它。Python 类中,手动添加构造方法的语法格式如下[详细]
-
Python类对象的创建和运用
所属栏目:[语言] 日期:2022-07-07 热度:90
通过前面章节的学习,我们已经学会如何定义一个类,但要想使用它,必须创建该类的对象。 创建类对象的过程,又称为类的实例化。 Python类的实例化 对已定义好的类进行实例化,其语法格式如下: 类名(参数) 定义类时,如果没有手动添加 __init__() 构造方法[详细]
-
Python self用法细说
所属栏目:[语言] 日期:2022-07-07 热度:102
在定义类的过程中,无论是显式创建类的构造方法,还是向类中添加实例方法,都要求将 self 参数作为方法的第一个参数。例如,定义一个 Person 类: class Person: def __init__(self): print(正在执行构造方法) # 定义一个study()实例方法 def study(self,n[详细]
-
Python类变量与实例变量 类属性和实例属性
所属栏目:[语言] 日期:2022-07-07 热度:104
无论是类属性还是类方法,都无法像普通变量或者函数那样,在类的外部直接使用它们。我们可以将类看做一个独立的空间,则类属性其实就是在类体中定义的变量,类方法是在类体中定义的函数。 前面章节提到过,在类体中,根据变量定义的位置不同,以及定义的方[详细]
-
Python实例方法 静态方法和类方法详解 包含差异和用法
所属栏目:[语言] 日期:2022-07-07 热度:91
和类属性一样,类方法也可以进行更细致的划分,具体可分为类方法、实例方法和静态方法。 和类属性的分类不同,对于初学者来说,区分这 3 种类方法是非常简单的,即采用 @classmethod 修饰的方法为类方法;采用 @staticmethod 修饰的方法为静态方法;不用任[详细]
-
Python类调用实例方式
所属栏目:[语言] 日期:2022-07-07 热度:54
通过前面的学习,类方法大体分为 3 类,分别是类方法、实例方法和静态方法,其中实例方法用的是最多的。我们知道,实例方法的调用方式其实有 2 种,既可以采用类对象调用,也可以直接通过类名调用。 通常情况下,我们习惯使用类对象调用类中的实例方法。但[详细]
-
何为描述符 Python描述符详解
所属栏目:[语言] 日期:2022-07-06 热度:112
Python 中,通过使用描述符,可以让程序员在引用一个对象属性时自定义要完成的工作。 本质上看,描述符就是一个类,只不过它定义了另一个类中属性的访问方式。换句话说,一个类可以将属性管理全权委托给描述符类。 描述符是 Python 中复杂属性访问的基础,[详细]
-
Python property 函数 概念属性
所属栏目:[语言] 日期:2022-07-06 热度:102
前面章节中,我们一直在用类对象.属性的方式访问类中定义的属性,其实这种做法是欠妥的,因为它破坏了类的封装原则。正常情况下,类包含的属性应该是隐藏的,只允许通过类提供的方法来间接实现对类属性的访问和操作。 因此,在不破坏类封装原则的基础上,[详细]
-
Python封装机制及达成方法
所属栏目:[语言] 日期:2022-07-06 热度:154
不光是 Python,大多数面向对象编程语言(诸如 C++、Java 等)都具备 3 个典型特征,即封装、继承和多态。其中,本节重点讲解 Python 类的封装特性,继承和多态会在后续章节给大家做详细讲解。 简单的理解封装(Encapsulation),即在设计类时,刻意地将一[详细]
-
Python继承机制及其利用
所属栏目:[语言] 日期:2022-07-06 热度:142
Python 类的封装、继承、多态 3 大特性,前面章节已经详细介绍了 Python 类的封装,本节继续讲解 Python 类的继承机制。 继承机制经常用于创建和现有类功能类似的新类,又或是新类只需要在现有类基础上添加一些成员(属性和方法),但又不想直接将现有类代[详细]
-
Python父类方式重写 入门必读
所属栏目:[语言] 日期:2022-07-06 热度:154
前面讲过在 Python 中,子类继承了父类,那么子类就拥有了父类所有的类属性和类方法。通常情况下,子类会在此基础上,扩展一些新的类属性和类方法。 但凡事都有例外,我们可能会遇到这样一种情况,即子类从父类继承得来的类方法中,大部分是适合子类使用的[详细]
-
Python super 函数 调用父类的创造方法
所属栏目:[语言] 日期:2022-07-06 热度:199
前面不止一次讲过,Python 中子类会继承父类所有的类属性和类方法。严格来说,类的构造方法其实就是实例方法,因此毫无疑问,父类的构造方法,子类同样会继承。 但我们知道,Python 是一门支持多继承的面向对象编程语言,如果子类继承的多个父类中包含同名[详细]
-
Python __slots__ 限制类实例动态增加属性和方法
所属栏目:[语言] 日期:2022-07-06 热度:196
通过学习《Python类变量和实例变量》一节,了解了如何动态的为单个实例对象添加属性,甚至如果必要的话,还可以为所有的类实例对象统一添加属性(通过给类添加属性)。 那么,Python 是否也允许动态地为类或实例对象添加方法呢?答案是肯定的。我们知道,[详细]
-
Python type 函数 动态创造类
所属栏目:[语言] 日期:2022-07-06 热度:100
我们知道,type() 函数属于 Python 内置函数,通常用来查看某个变量的具体类型。其实,type() 函数还有一个更高级的用法,即创建一个自定义类型(也就是创建一个类)。 type() 函数的语法格式有 2 种,分别如下: type(obj) type(name, bases, dict) 以上[详细]