![](https://img-blog.csdnimg.cn/20190927151026427.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Python
文章平均质量分 57
Python语法,例子
夜空霓虹
记录自己软件开发中遇到的和解决的问题
展开
-
一个简单的网页爬虫
适用于python3.6.1import urllib.request import redef getHtml(url): page = urllib.request.urlopen(url) html = page.read() return htmldef getImg(html): reg = r'src="(.+?\.jpg)" pic_e转载 2017-05-20 16:17:53 · 285 阅读 · 0 评论 -
Python实证式算法评估
1.请用timeit模块来进行计时。timeit模块本身就是为执行相对可靠的计时操作而设计的。>>> import timeit>>> timeit.timeit("x=2+2")0.01885766963785026>>> timeit.timeit("x=sum(range(10))")0.66005109452954612.请使用profiler找出瓶颈。在实践过程中原创 2017-06-05 10:29:08 · 637 阅读 · 0 评论 -
拓扑排序问题
拓扑排序:几乎在所有的项目中,待完成的任务之间通常都会存在着某些依赖关系,这些关系会对它们的执行顺序形成部分约束。对于这种依赖关系,我们通常很容易将其表示成一个有向无环路图(DAG),并将寻找其中依赖顺序的过程(寻找所有沿着特定顺序前进的边与点)成为拓扑排序(topological sorting)解决思路:如何归简?首先移除其中一个节点,然后解决其余n-1个节点的问题原创 2017-06-10 17:07:25 · 845 阅读 · 0 评论 -
一个经典的智力题
上图中有一块角缺了一个方格的国际象棋棋盘,现在我们想用L形方砖拼出这样一块棋盘。该如何解决?归简法该用到哪里呢?下面我们就单独就来看其中的一块砖吧,先假设其余问题,或者说这块砖以外的所有问题都已经解决,这是最后一个问题了(这里显然用了归简法)现在的问题是,如何将原棋盘划分成若干个更小的相同正方体,由于这是个平方体,所以我们自然会从四个较小的正方体开始分。横在我们和完整的原创 2017-06-09 10:54:57 · 643 阅读 · 0 评论 -
深度优先的时间戳与拓扑排序
我们为每个结点添加了时间戳,其中一种代表它被探索到的时间(探索开始时,标识为d)而另一种代表我们回溯到该节点的时间(探索完成时,标识为f)清单5-7 带时间戳的深度优先搜索:def dfs(G,s,d,f,S=None,t=0): if S is None:S=set() d[s]=t;t+=1 S.add(s) for u in G[s]:原创 2017-06-13 11:38:21 · 1588 阅读 · 0 评论 -
棋盘拼接问题
接上一篇博客的问题:http://blog.csdn.net/zhang_xiaomeng/article/details/72954471程序如下:def cover(board, lab=1, top=0, left=0, side=None): if side is None: side = len(board) # Side length of subboard原创 2017-06-09 15:41:24 · 979 阅读 · 0 评论 -
Python-Bunch模式
“Bunch”设计模式:首先,它能让我们以命令行参数的形式创建相关对象,并设置任何属性。>>> class Bunch(dict): def __init__(self,*args,**kwds): super(Bunch,self).__init__(*args,**kwds) self.__dict__=self >>> x=Bunch(age="54",addres原创 2017-06-05 15:55:52 · 6447 阅读 · 0 评论 -
Python图结构--邻接矩阵
图的另一种常见表示法就是邻接矩阵了。会将每个节点可能的邻居位置排成一行(也就是一个数组,用于对应图中每一个节点),然后用某种值(如True或False)来表示相关节点是否为当前节点的邻居。与之前一样,其最简单的形式也可以用嵌套list来实现。节点编号依然是从0到V-1。并且为了让矩阵具有更好的可读性,我们将会用1和0来充当所谓的真值(也可用True和False)>>> a,b,原创 2017-06-05 11:56:23 · 20544 阅读 · 0 评论 -
一个明星问题
所谓明星问题,其实就是在人群中找出一位明星人士。问题思路:该明星不认识人群中的其他人,但人人都认识这位明星。其实就是要研究某组依赖关系,寻找一个入手点。类似问题,在某个多线程应用程序中,线程之间可能存在着某种环形依赖的等待关系(所谓的死锁),我们需要找出一个不需要等任何线程,但其他所有线程都要依赖于它的线程。无论我们用什么方式来包装这个问题,它的核心表现形式都是一个图结构。我们要寻找的原创 2017-06-10 11:13:17 · 734 阅读 · 0 评论 -
迭代深度的深度优先搜索
代码:def iddfs(G,s): yielded=set() def recurse(G,s,d,S=None): if s not in yielded: yield s yielded.add(s) if d==0:return if S is None:S=set()原创 2017-06-15 11:00:56 · 1517 阅读 · 0 评论 -
寻找最大排列问题
现在八个人去电影院看电影,他们现在都有了自己的位置,但是他们其中有的满意,有的不满意。他们想做的座位如下图:图中a,b,c,d,e,f,g,h都表示座位,也表示座位上的人,箭头指向他们想坐的座位。那么问题是:找到一个子集,使得满意的人数达到最多的那个方案。分析如下:1.如果各个人指向的座位不同,那么整个集合本身就是结果了。(大家喜欢的座位各不相同,那还争什么呀,大家原创 2017-06-09 21:35:48 · 657 阅读 · 0 评论 -
深度优先搜索-附python中yield的用法
清单5-4 递归版的深度优先搜索def rec_dfs(G,s,S=None): print("调用rec_dfs():s:",s) if S is None:S=set() S.add(s) for u in G[s]: print("s:",s,"u:",u) if u in S:continue prin原创 2017-06-13 11:01:35 · 660 阅读 · 0 评论 -
归纳、递归和归简-Python算法
归简法:将某一问题转化成另一个问题。倾向于将一个为止问题归简成一个已解决的问题。归简法可能会涉及输入(操作中可能会遇到的新问题)与输出(已经解决的问题)之间的转化。归纳法:被用于证明某个语句对于大型对象类(通常是一些自然数类型)是否成立。我们首先要证明语句在某一基本情况(例如当数字为1时是成立的),然后证明它可以由一个对象“推广到”下一个对象(如果对于n-1成立,那么它对于n也原创 2017-06-09 09:31:51 · 744 阅读 · 0 评论 -
一些解决问题的建议
1.确保自己真正了解相关问题。包括输入什么,输出什么,两者之间是什么关系。然后试着用您所熟悉的数据结构(如某种序列或图结构)来表示该问题的实例。此外,有时候先直接提出一个简单粗暴的解决方案也有助于您理清问题的实质内容。2.找到一种归简方法。您是否能将相关输入转换成另一个已解决问题的输入?以及能让其输出结果为己所用?您能否将某个问题的实例的规模由n归简至k(k3.原创 2017-06-12 19:51:28 · 618 阅读 · 0 评论 -
Python图结构-树的实现
在一般情况下,但凡可以用来表示图的方法通常都可以用来表示树,因为树本身就是图的一种特殊情况。大部分树算法都可以被理解成一般图概念中的思路,但特定的树结构会使得它们更容易实现。例子:带根的树结构,这种树的每条边都从根出发,并向下方延伸,此类结构往往代表的是某个数据集所拥有的层次结构,其根结点代表着全部对象。而其内部各节点所代表的对象都是以该节点为根的树结构的叶结点。我们可以将其各原创 2017-06-05 15:45:19 · 4976 阅读 · 0 评论 -
计数排序的另一种实现(Python)附python中defaultdict方法的使用
计数排序的代码:from collections import defaultdictdef counting_sort(A,key=lambda x:x): B,C=[],defaultdict(list) for x in A: C[key(x)].append(x) for k in range(min(C),max(C)+1):原创 2017-06-10 09:09:27 · 394 阅读 · 0 评论 -
算法程序-两个字符串是否是由颠倒字母组成
有两个字符串,如果他们中的一个是另一个的字母顺序颠倒过来,组成的字符串。那么就返回True。否则,返回False。假定两个字符串的长度相等。比如,‘heart’和‘earth’,返回True。而“abcd”“abdd”返回False。两种解决思路:1.以其中的一个字符串s1为参照,另一个字符串s2放到一个list中命名为a_list,将s1中的字符拿出来和a_list中的每一个字符作比原创 2017-06-03 10:18:44 · 576 阅读 · 0 评论 -
Python图结构--邻接列表及其类似结构
算法学最强大的框架之一--图结构(graph)对于图结构的实现来说,最直观的方式之一就是使用邻接列表。基本上就是要针对每个节点设置一个邻居列表(也可以是set等其他容器或迭代器类型)下面我们来实现一个最简单的:假设现在我们有n个节点,编号分别为0,1,...,n-1。注意:节点可以是任何对象,可以被赋予任何标签或名称,但使用0,1,...n-1区间内的整数来实现的的话,会简单许多。原创 2017-06-05 11:29:18 · 4000 阅读 · 0 评论 -
Python基础语法-Python对象
1.类型的类型所有类型对象的类型都是type。它也是所有Python类型的根和所有Python标准类的默认元类(metaclass)。>>> type(2)>>> type(type(2))>>> type(int)>>> 2.None,Python的Null对象原创 2017-06-05 20:39:15 · 286 阅读 · 0 评论 -
Python算法--计数初步
1.sum求和>>> x=2>>> sum(x*y for y in range(1,101))10100>>> 5050*210100>>> sum(i for i in range(1,101))5050>>> sum(3+i for i in range(1,101))5350>>> sum(3+i for i in range(1,101))+sum(4*i for原创 2017-06-06 11:15:19 · 642 阅读 · 0 评论 -
浮点数
复习浮点数的二进制转换现在让我们复习大学计算机基础课程。如果你熟练掌握了浮点数向二进制表达式转换的方法,那么你可以跳过这节。我们先来看下浮点数二进制表达的三个组成部分。三个主要成分是:Sign(1bit):表示浮点数是正数还是负数。0表示正数,1表示负数Exponent(8bits):指数部分。类似于科学技术法中的M*10^N中的N,只不过这里是以2为底数而原创 2017-08-21 19:04:18 · 411 阅读 · 0 评论 -
什么是深度优先搜索和广度优先搜索
图的一些相关概念:简单图(Simple graph):无环并且无平行边的图.路(path):内部点互不相同的链。如果无向图G中每一对不同的顶点x和y都有一条路,(即W(G)=1,连通分支数)则称G是连通图,反之称为非连通图。两端点相同的路(即闭路)称为圈(cycle)。树(tree)是无圈连通无向图。树中度数为1的结点称为树的叶结点。树中度数大于1的结点称为树的分支节点或内部结原创 2017-06-15 09:10:32 · 7624 阅读 · 0 评论 -
通用性的图遍历函数
清单5-6 通用性的图遍历函数def traverse(G,s,qtype=set()): S,Q=set(),qtype() Q.add(s) while Q: u=Q.pop() if u in S:continue S.add(u) for v in G[u]: Q.add(v原创 2017-06-13 11:23:29 · 376 阅读 · 0 评论 -
Python自带数据结构的运行效率
1.List:def test1(): l = [] for i in range(1000): l = l + [i]def test2(): l = [] for i in range(1000): l.append(i)def test3(): l = [i for i in range(1000)]def t原创 2017-06-03 11:14:39 · 994 阅读 · 0 评论 -
遍历-算法的万能钥匙
图结构:非常强大的结构化思维(或数学)模型。如果您能用图的处理方式来规范化某个问题,即使这个问题本身看上去并不像个图问题,也能使您离解决问题更进一步。在众多图算法中,我们常会用到一种非常实用的思维模型--遍历(traversal):对图中所有节点的探索及访问操作。两种著名的基本遍历策略:深度优先搜索(depth-first search)广度优先搜索(breadth原创 2017-06-13 09:27:17 · 395 阅读 · 0 评论 -
递归版的插入排序和选择排序
#递归版插入排序:将目标序列中的第i个元素进行排序,首先要对i-1个元素进行递归性排序def ins_sort_rec(seq,i): if i==0: return ins_sort_rec(seq,i-1) j=i while j>0 and seq[j-1]>seq[j]: seq[j-1],seq[j]=seq[j],seq[j-1]原创 2017-06-09 20:38:20 · 1206 阅读 · 0 评论 -
强连通分量
如果有向图的任何一对结点间是相互可达的,则称这个有向图是强连通的。原创 2017-06-15 11:42:54 · 239 阅读 · 0 评论 -
广度优先搜索
代码:import collectionsdef bfs(G,s): P,Q={s:None},collections.deque([s]) while Q: u=Q.popleft() for v in G[u]: if v in P:continue P[v]=u Q.原创 2017-06-15 11:22:53 · 218 阅读 · 0 评论 -
Python标准输出
直接把列表存储在文件中,可读性不好。修改代码:把数据输出到一个磁盘文件而不是显示在屏幕上(称为标准输出)。然后就可以采用一种更可用的格式保存数据。标准输出(standard output):这是使用“print()” BIF代码写数据的默认位置,这通常是屏幕。在Python中,标准输出是指“sys.stdout”,可以从标准库中的“sys”模块导入。nester.py原创 2017-05-05 11:31:05 · 1871 阅读 · 0 评论 -
python中的 partial 固定部分参数的函数
from functools import partialdef power(x,num): return x**numpartial(power,2)partial(power,2)(3)输出:8可以指定参数名称,比如partial(power,num=2)计算x的平方原创 2019-05-19 14:57:37 · 2291 阅读 · 0 评论 -
换行符
\n原创 2019-05-20 17:33:16 · 188 阅读 · 0 评论 -
小试牛刀---清华大学THULAC中文词法分析工具包
1.下载:2.尝试分词:注意:input.txt文件 放在python的安装目录是可行的哦~我的是:D:\Program Files\Python原创 2017-05-03 10:53:39 · 3665 阅读 · 1 评论 -
2019-2-11-python开发工具Anaconda 的安装
新年第一篇博客。1.下载地址:https://www.anaconda.com/distribution/我们选择的是内置的python3.7版本的(装了anaconda就不需要装python)安装到默认路径,只要不带空格就行,C盘下参考百度经验:https://jingyan.baidu.com/album/425e69e615da75be14fc1645.html?pi...原创 2019-02-12 11:25:16 · 540 阅读 · 0 评论 -
Python转换列表&&数据去重&&集合
转换列表是一个很常见的需求,因此Python提供了一个工具。可以尽可能毫不费力第完成这种转换。工具名称:列表推导(list comprehension)设计列表推导是为了减少将一个列表转换为另一个列表时所需编写的代码量。一些例子:>>> mins = [1,2,3]>>> secs = [m*60 for m in mins]>>> secs[60, 120, 180]>>原创 2017-05-05 20:35:26 · 4319 阅读 · 0 评论 -
Python3中的sorted函数
参照http://blog.csdn.net/lanchunhui/article/details/50959390中的一些说法和例子。sorted() 函数接口:>>> help(sorted)Help on built-in function sorted in module builtins:sorted(iterable, /, *, key=None,原创 2017-05-11 16:35:42 · 2281 阅读 · 0 评论 -
一些基础Python基础用法--采自《Python核心编程》
1.Python的print语句,与字符串格式运算符(%)结合使用,可实现字符串替换功能。>>> print("%s is number %d!"%("Python",1))Python is number 1!%s表示由一个字符串来替换,而%d表示由一个整数来替换。%f表示由一个浮点数来替换。>>> print("%f is a float number."%(1.345))1.34原创 2017-05-24 21:36:55 · 313 阅读 · 0 评论 -
2019-02-12-python numpy使用
安装完Anaconda后,如何安装numpy库呢?管理员身份运行anaconda navigator即可看到如图numpy已经安装好了prompt中输入jupyter notebook,运行起来运行spyder: projects-->new Project ,新建一个test.py文件:一个例子,参考《机器学习之路》import numpy a...原创 2019-02-13 10:06:11 · 155 阅读 · 0 评论 -
Python文件异常try/except/finally
try: data = open("my.txt") print(data.readline(),end='')except IOError as err: print("File error:"+str(err))finally: if 'data' in locals(): data.close原创 2017-05-05 10:40:43 · 6762 阅读 · 0 评论 -
python中的lambda表达式
lambda <变量> : <表达式>变量:参数表达式:返回值没有函数名平方函数的lambda表达式:lambda x:x**2tmp = map(lambda x:x**2,range(5))list(tmp)输出:[0, 1, 4, 9, 16]tmp =filter(lambda x: x%2 == 0 ,range(...原创 2019-05-19 21:03:28 · 2637 阅读 · 0 评论 -
windows下启动powershell运行python程序
1.打开windows powershell2.输入python。显示版本号,则正确安装python。如果没有则自行安装python。或者anaconda(里面内置python,需要配置环境变量。见上篇博客)3.新建一个自测的test.py文件print("Hi!")到test.py目录下,执行python test.py得到结果:4.退出,执行exit()...原创 2019-02-13 17:06:54 · 12987 阅读 · 0 评论