![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Python
文章平均质量分 83
schdut
记录学习笔记,欢迎交流讨论。
展开
-
Python实现 《算法导论 第三版》中的算法 第23章 最小生成树
最小生成树对于一个带权重的连通无向图G=(V,E)G=(V,E)G=(V,E)和权重函数w:E→Rw:E \rightarrow Rw:E→R,该权重函数将每条边映射到实数值的权重上。最小生成树(Minimum Spanning Tree,MST)问题是指,找到一个无环子集T⊆ET\subseteq ET⊆E,能够将所有的结点连接起来,又具有最小的权重。解决最小生成树问题有两种算法:Kruskal算法和Prim算法。这两种算法都是贪心算法。贪心算法通常在每一步有多个可能的选择,并推荐选择在当前看来最好的原创 2021-01-20 11:07:13 · 311 阅读 · 0 评论 -
Python实现 《算法导论 第三版》中的算法 第22章 基本的图算法
文章目录图的表示图的遍历广度优先搜索深度优先搜索图的表示图有多种表示方法,比较常用的表示法有邻接链表和邻接矩阵。根据边的方向,图可以分为无向图和有向图;根据边的权重,图可以分为带权图和不带权图。对于图G=(V,E)G=(V,E)G=(V,E),其邻接链表表示由一个包含∣V∣|V|∣V∣条链表的数组AdjAdjAdj所构成,每个结点有一条链表。对于每个结点u∈Vu \in Vu∈V,邻接链表Adj[u]Adj[u]Adj[u]包含所有与结点uuu之间有边相连的结点vvv,即Adj[u]Adj[u]Ad原创 2021-01-13 15:55:45 · 360 阅读 · 1 评论 -
Python核心编程笔记(第1-4章 基础)
采用书籍Python核心编程(第二版),人民邮电出版社,2008年7月第1版。本书以Python2.5为主,但笔记主要以Python3.6为主。第一章、欢迎来到Python世界本章主要讲了Python的起源、特点等:Python的创造者是贵铎·范·罗萨姆(Guido van Rossum)Python的意思是蟒蛇Python的特点:高级、面向对象、可升级、可扩展、可移...原创 2018-02-08 20:54:11 · 460 阅读 · 0 评论 -
Python核心编程笔记(第5-7章 常用标准类型)
采用书籍Python核心编程(第二版),人民邮电出版社,2008年7月第1版。本书以Python2.5为主,但笔记主要以Python3.6为主。第五章 数字5.1 简介支持多种数据类型:整型、长整型(二者已统一)、布尔型、双精度浮点型float、十进制浮点型(Decimal)和复数赋值:a = 10更新:a = 3.14。数字对象是不可变对象,此处实际上是生成了一...原创 2018-02-09 10:06:42 · 199 阅读 · 0 评论 -
Python数据结构中有趣的小技巧
学习Python中,在此记录一些Python数据结构中的小技巧,不定时进行更新…1. 统计list中所有元素的频率题目描述:统计list中所有元素的频率。解题方法:nums = [1,2,3,4,5,4,3,2,1] # 一般方法numFreq = {}for num in nums: if num not in numFreq: numFreq[...原创 2018-03-14 15:17:06 · 377 阅读 · 0 评论 -
Python实现 《算法导论 第三版》中的算法 第2章 算法基础
目录第2章 算法基础1. 插入排序2. 归并排序3. 选择排序4. 冒泡排序第2章 算法基础1. 插入排序P17。插入排序比较简单。class InsertionSort: def sort(self, A): for i in range(1, len(A)): temp = A[i] j = i - 1 ...原创 2018-09-22 09:36:22 · 401 阅读 · 0 评论 -
Python实现 《算法导论 第三版》中的算法 第4章 分治策略
目录第4章 分治策略1. 最大子数组问题2. 最大子数组问题的其他解法3. Strassen算法第4章 分治策略1. 最大子数组问题P40。认真读一下4.1节,有一定算法基础就可以看懂。这个问题的全称是最大连续子数组问题。那么,最大子数组究竟是什么呢?要想弄清楚最大(连续)子数组是什么,首先需要明白(连续)子数组。(连续)子数组是数组中连续的几个元素组成的数组。此时会有两种不同理解,子数...原创 2018-09-30 22:04:05 · 385 阅读 · 0 评论 -
Python实现 《算法导论 第三版》中的算法 第6章 堆排序
目录第6章 堆排序1. 堆2. 优先队列第6章 堆排序1. 堆堆是一个数组,它可以被看成一个近似的完全二叉树。树上的每一个结点对应数组中的一个元素。除最底层外,该树是完全充满的,而且是从左向右填充。表示堆的数组包括两个属性:A.length(通常)给出数组元素的个数,A.heap-size表示有多少堆元素存储在该数组中。也就是说,虽然A[1…A.length]可能都存有数据,但只有A[...原创 2018-10-13 19:43:37 · 450 阅读 · 1 评论 -
Python实现 《算法导论 第三版》中的算法 第7章 快速排序
目录第7章 快速排序1. 快速排序第7章 快速排序1. 快速排序快速排序是一种最坏情况时间复杂度为Θ(n2)\Theta(n^2)Θ(n2)的排序算法。虽然最坏情况很差,但是快速排序通常是实际排序应用中最好的选择。因为他的平均性能非常好:期望时间复杂度为Θ(nlgn)\Theta(nlgn)Θ(nlgn),而且其中隐含的常数因子非常小。另外,它还是原址排序,空间复杂度为O(1)O(1)O(...原创 2018-10-20 22:03:53 · 466 阅读 · 0 评论 -
Python实现 《算法导论 第三版》中的算法 第9章 中位数和顺序统计量
目录第9章 中位数和顺序统计量9.1 最小值和最大值9.2 期望为线性时间的选择算法9.3 最坏情况为线性时间的选择算法第9章 中位数和顺序统计量在一个有nnn个元素组成的集合中,第iii个顺序统计量(order statistic)是该集合中第iii小的元素。例如,最小值是第1个顺序统计量(i=1i=1i=1),最大值是第nnn个统计量。中位数比较特殊,当nnn为奇数时,它是唯一的;当nnn...原创 2018-10-29 14:19:43 · 481 阅读 · 0 评论 -
Python实现 《算法导论 第三版》中的算法 第8章 线性时间排序
目录第8章 线性时间排序8.1 排序算法的下界8.2 计数排序8.3 基数排序8.4 桶排序第8章 线性时间排序8.1 排序算法的下界归并排序、堆排序和快速排序能在O(nlgn)O(nlgn)O(nlgn)时间内排序nnn个数。归并排序和堆排序在最坏情况下就能够达到该时间,快速排序在平均情况达到该时间(快速排序最坏情况下是O(n2)O(n^2)O(n2))。如果在排序中各元素的次序依赖于...原创 2018-10-27 20:42:33 · 317 阅读 · 0 评论 -
Python实现 《算法导论 第三版》中的算法 第10章 基本数据结构
文章目录第10章 基本数据结构10.1 栈和队列10.2 链表第10章 基本数据结构10.1 栈和队列栈和队列都是一种动态集合。栈实现后进先出(last-in, first-out, LIFO)的策略:最后进入的元素被最先删除。队列实现先进先出(first-in, first-out, FIFO)的策略:最先进入的元素被最先删除。下面实现了书中的栈,包括:P129:STACK-EMPT...原创 2018-11-23 19:47:43 · 768 阅读 · 0 评论 -
Python核心编程笔记(第8章 条件和循环)
采用书籍Python核心编程(第二版),人民邮电出版社,2008年7月第1版。本书以Python2.5为主,但笔记主要以Python3.6为主。第8章 条件和循环8.1 条件语句# 1.ifif expression: a = 1 print(a)# 2.if-else,逻辑清晰if expression: ...else: ......原创 2018-02-09 12:25:00 · 154 阅读 · 0 评论 -
Python核心编程笔记(第9章 文件和输入输出)
采用书籍Python核心编程(第二版),人民邮电出版社,2008年7月第1版。本书以Python2.5为主,但笔记主要以Python3.6为主。第9章 文件和输入输出9.1 文件对象文件对象不仅可以用来访问普通的磁盘文件,也可以访问任何其他类型抽象层面上的“文件”内建函数open()返回一个文件对象,对该文件的相关操作都通过该对象进行文件知识连续的字节序列。数据的...原创 2018-02-09 20:44:10 · 157 阅读 · 0 评论 -
Python核心编程笔记(第10章 错误和异常)
采用书籍Python核心编程(第二版),人民邮电出版社,2008年7月第1版。本书以Python2.5为主,但笔记主要以Python3.6为主。第10章 错误和异常10.1 错误和异常错误包括语法错误或逻辑错误,导致解释器无法解释,程序无法进行异常是程序出现了错误,解释器引发异常,程序员可以进行捕获并进行处理10.2 Python中的异常ZeroDi...原创 2018-02-09 21:30:00 · 258 阅读 · 0 评论 -
由Python位运算到原码反码补码
采用书籍Python核心编程(第二版),人民邮电出版社,2008年7月第1版。本书以Python2.5为主,但笔记主要以Python3.6为主。一、Python位运算操作符Python支持标准位运算,位运算操作符只能用于整数。操作符如下: 操作符 意义 举例 操作符 意义 举例 ~ 按位取反 ~5 & 按位与 5...原创 2018-02-09 23:08:26 · 10626 阅读 · 1 评论 -
Python函数参数
根据廖叔叔的python教程整理函数参数1. 位置参数普通形式的参数,没有默认值调用时可以按参数顺序传入对应参数,可以按关键字形式传入(x=123,按关键字传入可以不按顺序),所以位置参数也叫必选参数位置参数必须在默认参数之前def square(x): return x * xprint(square(10))def power(x, n): ...原创 2017-11-25 20:04:21 · 252 阅读 · 0 评论 -
Python核心编程笔记(第11章 函数)
采用书籍Python核心编程(第二版),人民邮电出版社,2008年7月第1版。本书以Python2.5为主,但笔记主要以Python3.6为主。第11章 函数和函数式编程11.1 函数函数是对程序逻辑进行结构化或过程化的一种编程方法,易于管理一般来说,过程和函数类似。过程是没有返回值的,函数有返回值。但是,在Python中,过程就是函数,因为解释器会隐式地返回Non...原创 2018-02-13 21:35:48 · 281 阅读 · 0 评论 -
pandas入门(三)
三、汇总和计算描述统计pandas对象拥有一组常用的数学和统计方法。它们大部分都属于约简和汇总统计。df = DataFrame([1.4, np.nan],[7.1,-4.5],[np.nan,np.nan],[0.75,-1.3]],index=list('abcd'),columns=['one','two'])dfdf.sum() # 忽略NA值 # 把行变成一个df.s原创 2018-01-14 21:28:50 · 278 阅读 · 0 评论 -
pandas入门(二)
二、基本功能本节中,我将介绍Series和DataFrame中的基本功能。1. 重新索引pandas对象的一个重要方法是reindex(),其作用是创建一个适应新索引的新对象。如下,obj = Series([4,7,-5,3], index=['d','b','a','c'])obj# 调用reindex()将会根据新索引进行重排,如果某个索引值当前不存在,就引入缺失值。原创 2018-01-14 20:36:18 · 310 阅读 · 0 评论 -
pandas入门(一)
根据利用Python进行数据分析一书整理而成。pandas是本书后续内容的首选库。它含有是数据分析工作变得更快更简单的高级数据结构。pandas是基于NumPy构建的,让以NumPy为中心的应用变得更简单。pandas引入约定:from pandas import Series,DataFrameimport pandas as pd一、pandas的数据结构介绍要原创 2018-01-14 16:14:58 · 301 阅读 · 0 评论 -
NumPy基础知识整理(二)
根据利用Python进行数据分析一书整理而成。三、利用数组进行数据处理NumPy数组是你可以将许多数据处理任务表述为简洁的数组表达式(否则需要编写循环)。用数组表达式代替循环的做法,通常被称为矢量化。一般来说,矢量化数组运算要比等价的纯Python方式快上一两个数量级(甚至更多)。1. 将条件逻辑表述为数组运算numpy.where函数是三元表达式 x if condit原创 2018-01-14 13:32:39 · 258 阅读 · 0 评论 -
NumPy基础知识整理(一)
根据利用Python进行数据分析一书整理而成。NumPy 是 Python 中高性能科学计算和数据分析的基础包。它是本书所介绍的几乎所有高级工具的构建基础。理解 NumPy 有助于理解Pandas。一、ndarray: 一种多维数组对象NumPy 最重要的一个特点就是其N维数组对象(ndarray,不产生歧义的情况下也可以称之为数组),该对象是一个快速而灵活的大数据集容器,可以利用这原创 2018-01-14 11:10:16 · 463 阅读 · 0 评论 -
Python核心编程笔记(第12章 模块)
采用书籍Python核心编程(第二版),人民邮电出版社,2008年7月第1版。本书以Python2.5为主,但笔记主要以Python3.6为主。第12章模块是用来组织Python代码的方法,而包是用来组织模块的12.1 模块和文件代码量变大—>把代码分成有组织的代码段,彼此能够交互—>代码可以共享,实现重用。那些自我包含并且有组织的代码片段就是模块(mod...原创 2018-02-14 15:10:41 · 269 阅读 · 0 评论 -
Python核心编程笔记(装饰器)
装饰器装饰器就是一个装饰函数的函数。装饰器是在函数调用之上的修饰。这些修饰仅是声明一个函数或方法的时候,才会应用的额外调用。以@开头,然后是装饰器的名字和可选的参数。# 装饰器没有参数,以下第二和第三处代码块等价def deco1(): passdef foo(): passfoo = deco1(foo) @deco1def foo(): ...原创 2018-02-13 20:29:20 · 200 阅读 · 0 评论 -
Python 安装Numpy,Scipy,Matplotlib-pip+whl文件
环境:Windows 10,64位 + Python 3.6 + pip 资源:Numpy, Scipy, Matplotlib的wheel文件见百度网盘或加州大学欧文分校的pythonlib地址https://pan.baidu.com/s/1kV00cB1 密码: 488khttp://www.lfd.uci.edu/~gohlke/pythonlibs/文件如下:(包名-版本...原创 2017-09-14 14:05:06 · 2519 阅读 · 1 评论 -
由Python浮点数溢出问题到二进制
为什么说浮点数缺乏精确性? python中浮点数运算问题 - 知乎问题描述中很清楚,0.1+0.1+0.1-0.3没有得到结果0,而是溢出了(Python3.6中不会)。数字在计算机中都是用二进制保存的,那就应该用二进制解释一下。数字的二进制我们目前使用的数字都是十进制,方便理解和运算;计算机的底层电路是用与或非电路设计的。它只能识别二进制,所以计算机中的数字用二进制来表示。(数字...原创 2018-02-10 11:01:36 · 3950 阅读 · 0 评论