![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
python基础知识点整理
python知识体系
梧桐雪
I am MetaWu from a magicverse where Models are all wrong, some of which are useful.
展开
-
使用np.set_printoptions设置打印数组格式
我们在终端打印numpy数组结果的时候,有时候会出现一些让人看着很难受的情况,比如:这个时候,我们只需要增加一行设置代码如下,就可以让结果看起来清晰无比:np.set_printoptions(precision=2,suppress=True)我们看到,效果非常明显,舒服。...原创 2021-07-21 11:43:04 · 1019 阅读 · 0 评论 -
使用matplotlib的axes画图
今天看到一篇非常好的文章Matlab绘图原理详解,其中介绍了axes的本质,我也动手实践了一下,基本上理解了axes的使用方法。其实用一句话总结就是:axes是指定的绘图区域我们来看以下代码:from matplotlib import pyplot as pltx = [1,2,3,4,5]y = [1,2,4,3,5]fig,axes = plt.subplots(1,3,figsize=(16,6))ax1,ax2,ax3 = axes[0],axes[1],axes[2]ax1.p原创 2021-01-20 11:16:00 · 2129 阅读 · 0 评论 -
使用python绘制学术用的多图
需求我们在写学术论文或者其他文章排版时候,经常会遇到要画多个子图的情况,来呈现多张图片表达更多的信息,如果手动排版的话,会比较繁琐,所以我希望通过编写一个python脚本来快速完成这个任务。实现方案第〇步:准备好所需要的图片,定义好子图的行列数第一步:把需要放在同一张大图中的小图整理好之后放在一个文件夹下第二步:通过os.walk函数获取这些文件的名字放到列表中第三步:通过subplot函数把这些图片按照行列显示出阿里代码import osfrom matplotlib import原创 2020-12-28 11:30:31 · 783 阅读 · 0 评论 -
python读取二值化的csv文件显示为黑白图
需求:现在有kernel.csv文件,他是一个类似卷积核的矩阵,矩阵中的数值只能取0或者1。每个点表示一个黑白像素,其中0表示黑色,1表示白色,现在要求通过python把这个卷积核的黑白图画出来。思路:使用pandas和numpy读取csv文件为np数组,然后使用matplotlib的imshow函数和show函数把图形import pandas as pdimport numpy as npimport matplotlib.pyplot as pltimg_arr = np.array(原创 2020-12-27 00:16:28 · 820 阅读 · 1 评论 -
python函数定义中的*,/,[]是什么意思?
文章目录一、疑问的产生二、形参列表中*,符号的作用三、形参列表中/,符号的作用四、读懂max函数的定义一、疑问的产生我曾经在看python官方文档的过程中有这样的疑问,比如以下的函数定义:max(iterable,*[, key, default]) 这个max函数的几个形参中,为什么既有*符号,又有[]?二、形参列表中*,符号的作用后来问了专家,才知道:函数形参列表中符号 * 表示,后面的形参只能为关键字参数 (keyword argument),不能为位置参数(positiona原创 2020-12-12 15:58:08 · 7653 阅读 · 1 评论 -
图解总结正则表达式基础
下图总结了正则表达式的基础知识,可以用于python爬虫、数据库查找等方面的应用。原创 2020-11-05 20:43:27 · 1169 阅读 · 0 评论 -
使用装饰器来测试程序的运行速度
装饰器如同乐高积木的模块一样,通过@的方式就可以呼叫出来给已有的函数增加强大的功能,装饰器的用法比较灵活,使用场景也非常广泛,一种常用的应用就是对函数的运行时间进行计时,我们可以引入time模块,然后定义一个timer装饰器,outer函数接受func参数(也就是需要装饰的函数),inner函数抽象调用func,并且在前后加入修饰的内容。最后把inner函数作为outer函数的函数名字作为返回值返回就可以了。然后,我们可以用这个timer去装饰consumer函数,注意这个consumer函数执行过后,他原创 2020-11-05 16:52:28 · 182 阅读 · 0 评论 -
python通过字典选择调用的函数(类似于SwitchCase语句)
我们会遇到这样的需求,对于一个功能,要根据输入条件的不同选择不同的调用函数,我们在C语言中可以使用switch语句,但是python没有SwitchCase的用法,因此需要使用其他方法来进行灵活的使用,以下代码就使用了字典的技巧来实现了函数的选择使用,我们理解以下代码的前提是理解python当中,函数是一个中要的对象,然后字典可以使用get方法来进行值的选取,函数的调用只需要在函数名字后面加上括号就可以了。def show_capital(name): print(name.upper())def原创 2020-11-05 16:12:21 · 3581 阅读 · 2 评论 -
68个python内置函数的分类
内置函数就是Python给用户提供的、拿来直接用的函数,比如print,input等,截止到python版本3.6.2 ,一共提供了68个内置函数,名单如下所示:#68个内置函数# abs() dict() help() min() setattr()# all() dir() hex() next() slice() # any() divmod原创 2020-09-16 23:44:23 · 645 阅读 · 0 评论 -
字典的get方法
官方文档解释:get(…)D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.这个其实是读取字典的方法dct[key]的一种加强版的拓展形式,就是说如果get方法只有一个参数,那么和读取字典中key对应的value值,如果没有这个key,则返回可选参数d,d的默认值为None。用这种方法,可以在建表的时候简化某些操作,比如对于字母异位词分组问题,我们可以在设计完键之后简化代码如下:lst = ["eat", "tea",原创 2020-06-02 22:53:37 · 2345 阅读 · 0 评论 -
通过zip方法将两个列表合成字典
我们现在有一个关键字列表key_list和一个值列表key_list,如何把这两个列表合成一个字典,使得其中的元素相互对应起来呢,这里我们可以使用zip的方法打包这两个列表,生成一个zip对象,zip对象本质上也是一种序列,因此,我们也可以使用dict将其类型转换为字典对象,具体的代码如下:key_list = ['name','age','gender']val_list = ['Allen...原创 2020-03-07 13:24:14 · 1606 阅读 · 0 评论 -
使用update方法合并两个字典
我们可以使用以下方法来利用python字典的update方法来一个字典中元素合并到另外一个字典中,注意如果两个字典中有相同的key值,那么update的参数中新的值会覆盖旧的值,这样就完成了更新。代码如下:def merge_two_dicts(a,b): c = a.copy() c.update(b) return ca = { 'x' : 1 , 'y' : 2 }b = {...原创 2020-03-07 12:01:03 · 958 阅读 · 0 评论 -
用列表生成式实现差集运算功能
我们再次复习列表生成式的用法来实现了集合差集的功能。并且与python自带的difference函数进行比较,两者的结果是一致的。list_A = [1,2,3,4,3]list_B = [1,2,4]def differnce(a,b): _a , _b = set(a),set(b) return([ x for x in _a if x not in _b])print(di...原创 2020-02-24 19:39:46 · 188 阅读 · 0 评论 -
使用列表生成器对列表进行筛选分组(枚举体方法和函数方法)
通过enumerate来获取元素的编号,再通过编号获得过滤器中的布尔值,然后根据布尔值作为判断条件,在列表生成式中把同一类的元素取出来。代码如下:lst = ['beep','boop','foo','bar']filters = [True,False,False,True]def bifurcate(lst,filters): return [ [ x for i,x in en...原创 2020-02-24 19:09:03 · 457 阅读 · 0 评论 -
python中的enumerate
enumerate有点类似于一个削弱版的Series,可以把一个列表编程一个索引序列(enumerate对象)我们也可以使用for循环对这个序列进行遍历。lst = ['beep','boop','foo','bar']enum_list = enumerate(lst,start=1)for x,y in enum_list: print(x,y)输出的结果如下:1 beep2 ...原创 2020-02-24 18:59:15 · 179 阅读 · 0 评论 -
一行代码生成九九乘法表中的所有元素
这个例子用于演示for循环嵌套for循环的列表生成式,如下所示:multi_table = [ i*j for i in range(1,10) for j in range(1,i+1)]打印结果如下:[1, 2, 4, 3, 6, 9, 4, 8, 12, 16, 5, 10, 15, 20, 25, 6, 12, 18, 24, 30, 36, 7, 14, 21, 28, 35, ...原创 2020-02-24 18:27:56 · 256 阅读 · 0 评论 -
用列表生成式和numpy技术求解数列前n项之和
今天的练习题如下,请编写Python程序完成下题:编写一个函数,当用户输入为偶数时,调用函数求1/2+1/4+…+1/n,当输入为奇数时,调用函数1/1+1/3+…+1/n用for循环+if语句编写可能会比较啰嗦,所以这里使用了列表生成式来写这个函数,这样看起来会紧凑一点。注意需要使用math函数才能引用ceil方法。import numpy as npimport mathdef e...原创 2020-02-24 18:09:01 · 1361 阅读 · 0 评论 -
python列表生成式的应用:一串随机数数列的生成
列表生成式使用[]创建一个列表,在其中进行容器类型数据的操作和运算,从而生成新的列表,列表生成式优雅简洁,有很多应用场景。比如:我们经常需要使用一串随机数,这个时候就需要生成式出场了,我们使用以下代码进行演示:from random import random #random库导入要符合规范gl = [ round(random(),2) for _ in range(10) ]print...原创 2020-02-24 17:24:33 · 2816 阅读 · 0 评论 -
用extend方法连接两个列表
如果需要把一个列表接到另外一个列表的后面,我们可以使用.extend方法来进行操作,演示代码如下:list1 = [1,2,3]list2 = [4,5,6]list1.extend(list2)print(list1)我们运行之后得到以下输出:[1, 2, 3, 4, 5, 6][Finished in 1.1s]可以看到,list1实现了延伸,后面接上了list2,长度从3...原创 2020-02-23 18:10:54 · 868 阅读 · 0 评论 -
字符串的find方法
我们在Excel中,会使用find函数查找某些元素在一个字符串中的坐标,这种方法在python的字符串中也可以使用,我们使用以下代码来查找字母v在字符串中的坐标。s = "I love python!"num = s.find('v')print(num)输出的结果为4[Finished in 0.7s]正好是s字符串中,v字母的索引数字下标。...原创 2020-02-21 22:57:27 · 3206 阅读 · 1 评论 -
python字符串的replace方法替换目标穿中的特定字符
类似于word中的替换操作,我们可以用replace来把一个字符串中的某些字符用新的字符替换,类似于英文replace a with b的语法,具体的代码如下:s = "I love python!"sr = s.replace('o','O')print(sr)运行结果如下:I lOve pythOn![Finished in 0.6s]我们看到,我们replace 了o wi...原创 2020-02-21 22:53:19 · 2582 阅读 · 5 评论 -
python中反转字符串的两种方法
python中可以使用reversed方法和逆序切片的方法来进行字符串的翻转操作,注意reversed方法是python内置函数,需要通过’’.join()方法拼接生成新的字符串,而逆序切片则需要使用[::-1]语法,具体的代码如下:s = 'abcde'rs1 = ''.join(reversed(s))print(rs1)rs2 = s[::-1]print(rs2)输出的结果如...原创 2020-02-21 22:43:56 · 693 阅读 · 0 评论 -
字符串(str)和列表(list)同根同源可相互转换
字符串和列表有着很多相似之处,比如都可以使用索引、切片等操作,都可以使用for循环进行迭代等等,这是因为他俩本来就是同根同源的,他们都属于一个叫做Sequence的类,这样就可以方便在他们之间进行相互的转换,python中提供了内置函数join可以通过分隔符delimiter把列表中的字符串全部连到一起;反过来,我们也可以使用字符串的split方法来分割字符串到一个列表当中,我们可以通过以下代码来...原创 2020-02-21 22:25:16 · 349 阅读 · 0 评论 -
爬虫技术的正则基础:用re提取html标签中间的内容
我们可以使用贪心捕获、费贪心捕获等方法,用正则表达式提取标签中间的内容。我们需要将模式字符串设置为(.*)来捕获标签中间的内容,其中点号.表示匹配除了换行符以外的任意字符,*表示匹配任意多(0个或者1个或者多个)字符。注意如果我们把小括号()去掉,那么在返回的字符串中将把html标签也包括进去。我们可以通过以下代码来看一下运行的结果。import recontent = ''' <h&...原创 2020-02-21 21:52:43 · 3223 阅读 · 1 评论 -
python正则表达式的预编译re.comile()方法
我们现在知道要使用正则表达式进行匹配查找等操作,需要有两个字符串,一个是模式字符串pat,一个是范围字符串s。有些时候,我们需要大量重复的进行匹配等操作,为了提高效率,我们可以使用python中正则表达式的预编译功能来达到一次编译,全局使用的效果,从而减少编译的次数,提高程序运行的效率。编译的意思其实就是翻译,指把程序语言翻译成计算机的语言,这个过程是需要时间的,而正则表达式的使用第第一步,就是...原创 2020-02-21 21:24:41 · 2072 阅读 · 0 评论 -
用re.compile(pat).sub()方法完成字符串的替换功能
类似word当中的替换,我们可以使用正则表达式来替换目标字符串中目标子字符串为特定的内容。注意语法re.compile(pat).sub(),pat是一个r开头的正则表达式,先经过预编译,然后使用.sub()方法,然后将更新后的字符串,和目标的字符串依次作为参数填入方法的括号中即可。import res = "hello 1234, goodbye, 235"print(s)pat = ...原创 2020-02-21 19:01:29 · 1494 阅读 · 0 评论 -
re.split()方法用正则表达式分割复杂的字符串
对于复杂的字符串,比如本例所给的s = ‘This, module ; \t provides|| regular ; ’ 用str原生的split函数比较难提取里面的英文单词,这个时候,就需要正则表达式出马来剔除那些烦人的特殊符号了。我们用正则表达式delimiter = r’[,\s;|]+'来作为字符串的分隔符,注意[]中括号把可能出现的特殊字符都包括在了里面,然后用+表...原创 2020-02-21 18:51:13 · 3642 阅读 · 0 评论 -
用split方法分割字符串返回字符串列表对象
python内置提供了非常强大的字符串分割方法split,可以根据自定义的分割字符来切分给定的字符串(s),生成一个字符串列表(ssl),把分割之后的子字符串前后排列存放到列表中。我们使用以下代码可以对这个功能进行演示:s = "I saw the kite fly in the sky."ssl = s.split('the')print(ssl)运行之后的结果如下:['I saw ...原创 2020-02-21 18:40:05 · 3147 阅读 · 0 评论 -
re.I参数实现在findall和finditer方法中实现匹配忽略大小写
大小写不敏感可以用参数re.I(I可能是代表ignore,我猜的,便于记忆),这个参数可以作为可选参数,填写在findall和finditer方法的后面。注意findall和finaiter的区别,findall返回的是一个字符串列表,里面一次排列着符合匹配要求的字符串;而finditer返回的是一个迭代器对象,里面存放着各个匹配字符串在母字符串s中的起始坐标,我们可以用以下代码来进行演示。im...原创 2020-02-21 18:30:01 · 2423 阅读 · 0 评论 -
正则表达式匹配(match)和查找(search)的区别
正则表达式match和search的方法比较相似,都是在一个字符串s中寻找pat子字符串,如果能找到,就返回一个Match对象,如果找不到,就返回None。但是不同的是,mtach方法是从头开始匹配,而search方法,可以在s字符串的任一位置查找。我们可以从以下的程序中看到这两种方法的区别。import res = "flourish"pat = "our"recom = re.comp...原创 2020-02-21 18:18:10 · 3918 阅读 · 0 评论 -
用正则表达式匹配(match)正整数
我们可以使用正则表达式来代表一些我们希望的字符串类型,比如正整数,我们就可以使用 pat = r’^ [1-9]\d*′这个模式来表示。也就是符合这个表达式的字符串,他就是一个正整数。这样就通过正则表达式建立了字符串和整数之间的关系。我们再次复习一下正则表达式中的符号,r表示正则表式的头(header),引号("")表示我们需要操作的是字符串对象,引号中表示这个字符串的开头,' 这个模式来表示。也...原创 2020-02-21 17:44:33 · 8674 阅读 · 0 评论 -
python正则表达式(re)基础:查找所有(findall)匹配和浮点数和整数
我们通过前面的例子可以知道,在正则表达式中,?表示的是0次或者1次,+表示的是1次或者多次,这个有点像word当中的通配符的作用。另外,我们可以使用.来表示小数点,因此可以使用\d+.?\d+的组合来表示浮点数或者整数。但是这个表达式有个bug,就是没法识别个位数整数,因此我们可以使用更好的写法来代替他,即r’\d+.\d+|\d+’。其中|表示或,在前面的表达式不满足的情况下再去匹配后面的表达式...原创 2020-02-21 00:10:06 · 6539 阅读 · 3 评论 -
python正则表达式(re)基础:查找所有(findall)匹配数字列表(ilst)
python正则表达式中,使用\d来表示数字(digit),使用+来表示1次或者多次,然后使用r放在一个引号表达式(也就是字符串)面前作为正则表达式的头部标签。比如r’\d+'表示符合1个或多个数字组合的正则表达式。所以可以认为正则表达式是一种抽象意义上的类似于含有数学未知数(代数式)的字符串。以下代码用findall演示了这种表达式的用法,注意findall方法将返回一个列表,这个列表中存放着所...原创 2020-02-20 23:49:02 · 11478 阅读 · 0 评论 -
python正则表达式(re)基础:查找(find)所有匹配字符串
如果我们需要查找到s中所有符合pat的字符串的span,我们应该怎么办呢?答案是使用finditer()这个方法,这个方法会返回一个iterable的结构,也就是说我们可以通过for循环来访问的结构。python会将所有满足条件的范围都记录在这个iteration中,我们可以用以下代码来进行演示。import reprint("***************查找一个匹配串***********...原创 2020-02-20 23:37:49 · 15064 阅读 · 0 评论 -
python正则表达式(re)基础:查找(search)第一个(first)匹配字符串
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。换句话来说,正则表达式可以按照模式条件(pattern)完成word中类似的查找(search)、替换(replace)等操作,是非常有用的字符串处理技术。以下代码是一个最简单的正则表达式处理程序,用来掩饰如...原创 2020-02-20 23:31:09 · 16814 阅读 · 0 评论 -
python的打包大法:用zip方法把两个列表打包成“一对儿”(元组or字典)
我们有些时候需要把两个列表合成一个元组列表。比如把[x,y,z] [1,2,3]合并成[(x,1),(y,2),(z,3)]。如果不嫌麻烦,我们可以使用for循环的方法来实现:list1 = ['x','y','z']list2 = [1,2,3]list_m = []for i in range(len(list1)): tuple_temp = (list1[i],list2[i])...原创 2020-02-20 21:07:44 · 6117 阅读 · 0 评论 -
python中使用while循环input方式来创建字典
我们可以通过input()方法来获取所需要创建字典的key和value值,并且把他们存储到字典中从而完成字典的创建。示例代码如下:responses = {}does_go_on = Truewhile does_go_on: name = input("What is your name?") response = input("Which mountain would you lik...原创 2020-02-15 22:38:48 · 4349 阅读 · 0 评论 -
pytho使用while循环彻底删除列表中的特定元素
假设我们有一个宠物列表,里面存放了一些宠物的名称,现在需要删掉当中的所有cat,我们可以使用while+in+remove的组合拳来完成这个任务。pets = ['dog','cat','dog','goldfish','cat','rabbit','cat']print(pets)pet_to_remove = 'cat'while pet_to_remove in pets: pet...原创 2020-02-15 22:18:15 · 835 阅读 · 0 评论 -
python中字典数据的嵌套:在字典中存储字典
还是套娃结构,字典中有字典,子子孙孙无穷匮,还是用逐层抽丝剥茧大法一点一点渗透进去,可以参考以下习题理解:题目:创建一个名为 cities 的字典,其中将三个城市名用作键;对于每座城市,都创建一个字典,并在其中包含该城市所属的国家、人口约数以及一个有关该城市的事实。在表示每座城市的字典中,应包含 country 、 population 和 fact 等键。将每座城市的名字以及有关它们的信息都打...原创 2020-02-11 19:12:58 · 2454 阅读 · 3 评论 -
python中字典的嵌套:在字典中存储列表
又字典列表,也有列表字典,顾名思义,列表字典就是字典的value值是列表的数据类型,我们通过字典的索引得到一个列表,然后再通过对列表的操作进行处理。只要把读取后的字典value值存在一个变量里面,这个变量就可以看成是普通的列表了,可以通过以下程序来进行演示:favorite_places={ "wangchenou": ["dayuan","dongzhou"], "lixiang" : [...原创 2020-02-11 18:53:17 · 3740 阅读 · 3 评论