![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python3
yuzhang_zy
现在的我不是最好的我,未来的我才是最好的我,每一篇博客都记录着我的成长
展开
-
python相关链接
python多线程原创 2022-04-23 17:47:10 · 777 阅读 · 0 评论 -
python的ModuleNotFoundError: No module named pip问题解决
之前在使用pip安装某一个第三方库的时候使用pip命令进行安装,但是在安装的时候出现了需要使用更新的pip版本进行安装,于是使用了pip update命令对pip命令进行更新,但是更新完之后出现了ModuleNotFoundError错误:查阅了一下资料发现可以使用下面两个命令进行更新:python -m ensurepippython -m pip install --upgrade pip...原创 2022-02-05 09:45:56 · 806 阅读 · 0 评论 -
pycharm中一个py文件导入另外一个py文件时出现红色波浪线解决
python在开发小脚本的时候往往需要多个模块的配合,所以往往会在一个py文件中导入另外一个py文件,但是在pycharm中导入的时候会出现红色波浪线,虽然可以运行,但是感觉红色波浪线就很不好看,下面是解决的步骤:① 首先找到File---Settings---Console---Python Console,将Add source roots to PYTHONPATH打上勾② 右键当前的文件目录找到Mark Directory as--Source Root,经过①②这两个步骤最终可以去除红色波原创 2022-01-26 23:46:06 · 3078 阅读 · 0 评论 -
python cmd环境输入python打开应用商店解决
在配置好了环境变量之后在cmd命令行下输入python但是打开的是windows 10的应用商店,但是我们希望显示的是python的安装版本,可以使用以下的方法解决:首先打开计算机的环境变量,找到path,将python的环境变量移动到WindowsApps环境变量前面。...原创 2022-01-23 17:10:48 · 9783 阅读 · 0 评论 -
python建图的三种常见方式
一般python创建有向图与无向图有以下几种方式(借助于列表或者字典来创建),有向图每一次建一条边即可,无向图则需要建两次,也即a-->b和b-->a,我们可以先考虑有向图的建图模式,首先是分为两大类,第一大类是边没有权重,第二大类是边具有权重,处理的方式都是一样的,只是在存储的时候有细微的差别:import collectionsif __name__ == "__main__": print(Solution().process()) # 有向图节点个数为10原创 2021-09-27 22:22:44 · 4991 阅读 · 0 评论 -
命令行方式安装Jupyter Notebook
安装Jupyter Notebook的前提是先安装了python的相关版本(例如3.5版本),安装安装Jupyter Notebook 有两种方式:① 使用Anaconda安装,一般Anaconda会帮你安装好了Jupyter Notebook这个文件了 ② 借助于命令行进行安装;下面采用的是命令行安装的方式,使用命令行安装必须先配置好python版本的Scripts文件夹的环境变量,也即将Scripts目录的路径添加到path中,这样在cmd命令行环境在输入pip才是有效的使用pip命令安装需要只要.原创 2021-09-27 10:20:33 · 3743 阅读 · 0 评论 -
pip不是内部的命令的解决方法
1. 首先需要确定是否配置了Scripts文件夹的环境变量(Scripts文件夹为安装python版本之后的一个文件夹),如果还没有配置那么需要先将Scripts的路径添加到环境变量的path中,在cmd命令行中输入那么就可以显示相关的提示。2. 如果是配置好了环境变量但是输入pip还是现实不是内部命令,此时需要检查一下Scripts目录下是否有pip.exe这个可运行文件,如果没有这个文件说明缺少这个文件所以输入pip显示不是....内部命令,我们需要在网上下载一下pip的相关文件,网址,下载好.原创 2021-09-27 09:45:25 · 3913 阅读 · 0 评论 -
python自定义排序规则
有的时候排序的元素类似于对象类型,这个时候就不能直接使用lambda表达式进行排序了,因为我们需要使用到两个元素中的属性进行设置排序规则,使用lambda表达式无法直接访问属性,这个时候可以借助python标准库中funtools模块,这样可以自定义排序的规则比较方便。比较常见的是列表中的元素为元组或者列表类型,python中列表中的元素为元组或者列表类型相当于c/c++中的结构体数组或者是java中的对象数组,下面是对列表中的元组自定义排序规则,代码如下:import functools#x,原创 2021-09-15 22:34:51 · 1826 阅读 · 0 评论 -
python3最大递归调用次数测试
python3中的最大递归调用次数为1000次左右,如果使用递归调用超过1000次就可能会造成运行时异常,这个时候我们需要通过设置最大递归调用次数这样对于调用次数比较大的情况下也可以通过题目,可以使用sys.setrecursionlimit(t),t为最大调用次数。import sysdef f(n: int): if n == 1200:return print(n) f(n + 1)if __name__ == '__main__': # 调用100原创 2021-09-14 20:55:13 · 828 阅读 · 0 评论 -
python将一个列表调整为大根堆模板
有的时候需要将一个列表调整为一个大根堆或者小根堆,我们其实可以从n = len(nums) // 2的位置处开始从上到小进行调整,将列表调整为小根堆或者是大根堆其实是在循环比较当前根节点的值与左右孩子节点调整比较的符号即可,下面是将列表调整为大根堆的代码模板:from typing import Listimport randomclass Solution: def makeToHeap(self, nums: List[int], low: int, high: int):原创 2021-07-08 11:44:04 · 563 阅读 · 0 评论 -
python实现高精度加法
有的时候由于两个相加的数字太大了,所以在相加的时候可能会出现溢出的情况,这个时候就可以使用高精度加法来解决这个问题。高精度加法主要使用数组或者列表来存储两个加数对应位置上的数字(两个相加的数字太大所以一般使用字符串来表示两个加数),然后模拟对应位置数字相加的过程,最后将相加的结果转换为字符串结果。下面是具体的代码:# 使用列表来存储两个加数的各个位置上的数字def add(a: str, b: str): # AB存储两个加数对应位置上的数字, C用来存储相加之后的结果 A, B,原创 2021-05-29 15:38:52 · 1054 阅读 · 0 评论 -
python创建多维列表
一般来说一维/二维列表都是比较常见的,但是最近在刷动态规划的算法题目的时候发现需要三维与四维的列表,其实python创建多维列表都可以在创建二维列表的基础上延伸创建的。例如创建值为全为0的3 * 4二维列表为:[[0] * 4 for i in range(3)],而创建三维列表可以在二维列表的基础上添加上左右括号并且增加多一个for循环即可:[[[0] * 5for i in range(4)] for j in range(3)],创建的是3 * 4 * 5的三维列表...依次类推对于四维....n维.原创 2021-04-23 18:23:59 · 5890 阅读 · 0 评论 -
python中itertools模块中的permutations方法生成全排列(递归)
在不存在重复元素的情况下可以使用python中itertools模块中的permutations方法生成全排列,permutations方法可以传递两个参数,第一个参数是可迭代的数据类型,第二个参数是排列的长度,第二个参数是可选的,不写表示生成可迭代类型对应长度的排列,下面是具体的例子:import itertoolsif __name__ == '__main__': nums = [i for i in range(1, 8)] permutations = itertools.原创 2021-04-15 22:28:44 · 1056 阅读 · 0 评论 -
python3辗转相除法求解最大公约数
问题描述原创 2021-04-13 23:21:36 · 440 阅读 · 0 评论 -
python求解x个数字选出n个数字的组合(递归)
有的时候需要在x个数字中选择出n个数字的需求(x大于等于n),这个时候我们可以使用递归来生成这些组合的方式,因为存在n个数字,所以n个数字中可以尝试填进去当前位置的数字,往下递归的时候递归的位置是加1的所以这样可以避免重复使用某个数字的情况,对于每个位置都是这样尝试可能的数字所以可以在for循环中进行递归:代码如下:from typing import Listres = 0# x,n表示在x个数字中选出n个数字的组合, nums表示原始的数字列表, index表示当前递归的位置,原创 2021-04-11 09:48:28 · 1105 阅读 · 0 评论 -
python中的count方法计算字符串中出现字符的个数
count() 方法用于统计字符串里某个字符出现的次数,可选参数为在字符串搜索的开始与结束位置,这个方法其实是有非常大的用处的。语法:str.count(sub, start= 0,end=len(string)),其中sub -- 搜索的子字符串start -- 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。end -- 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。if __name__ == '__main__': # count方法用原创 2021-04-09 09:05:22 · 11310 阅读 · 0 评论 -
python中print语句中end与sep参数的使用
我们在很多时候都会使用到print语句,print语句中常用的两个属性为end与sep参数,其中end参数规定输出的内容以什么结尾,不写这个参数的时候那么默认是以换行符结尾,如果需要以其他的字符结尾那么写上其他的字符即可,sep参数用来设置输出的多个对象之间连接的符号,一般在print语句中会输出多个参数,这些参数会使用逗号进行隔开,sep属性不写的话默认是按照空格连接if __name__ == '__main__': print("abd", "def", "ghi", end="!")原创 2021-03-27 17:42:15 · 3065 阅读 · 0 评论 -
python字典中删除键值对的del语句与pop方法
删除字典中的键值对的有del语句与pop方法,del 语句和 pop() 函数作用相同,pop() 函数有返回值,del语句没有返回值。pop()函数语法:pop(key[,default]),其中key: 要删除的键值,default: 如果没有 key,返回 default 值if __name__ == '__main__': dic = {"张三": 24, "李四": 23, "王五" : 25, "赵六" : 27} del dic["张三"] print(dic)原创 2021-03-25 23:13:49 · 6150 阅读 · 0 评论 -
python中ord/chr函数实现ASCII值与字符之间的切换
在很多时候需要获取某些字母的ASCII值或者是已知ASCII值想要知道对应的字符是什么,其中python中有两个函数分别是ord/chr函数可以实现ASCII值与字符之间的切换。ord函数可以获取一个字母的ascii值,chr函数可以将ascii值转换为字符if __name__ == '__main__': print(ord("a")) print(ord("A")) print(chr(97)) print(chr(66))...原创 2021-03-23 22:02:18 · 824 阅读 · 0 评论 -
python中format函数格式化数字和字符串
format函数为python中的格式化函数,可以对数字或者是字符串进行格式化,使用{}来指定对应的参数,可以接受不限个参数,位置可以不按顺序。在{}中可以指定索引输出对应位置的字符串if __name__ == '__main__': print("我叫{}, 今年{}岁".format("xiaoming", 26)) # 在{}中指定索引的时候那么就会输出对应索引的字符串 print("{0} {1} {0}".format("hi", "hello", "hi"))原创 2021-03-21 19:57:34 · 5119 阅读 · 0 评论 -
vscode简单调试python代码
除了使用pycharm编写与调试代码之外,还可以使用vscode编写与调试代码,这个编辑器比python自带的IDLE好多了,起码安装了插件之后代码提示与调试会变得方便一点,下面是vscode简单调试代码的步骤:① 安装python插件② 安装好了python插件之后,那么可以先在磁盘的某个位置创建一个文件夹,然后点击菜单栏中的File-New File创建python文件,之后就可以编写python代码了,写完之后需要对某一行的代码进行调试那么就需要在该行打上断点,点击菜单栏中的Run-Sta原创 2021-03-19 18:12:53 · 6742 阅读 · 0 评论 -
python中的remove函数
remove() 函数用于移除列表中某个值的第一个匹配项。语法:list.remove(obj) obj为需要移除的对象,下面是具体的应用:if __name__ == '__main__': li = ["123", "a", 45, "bcd", "a"] # remove函数移除掉满足条件的第一个元素 li.remove("a") print(li)...原创 2021-03-18 22:38:01 · 28106 阅读 · 1 评论 -
python计算机二级相关概念
1. python最常见的组合数据类型包括集合类型、序列类型、映射类型,其中序列类型包括字符串类型、列表类型、元组类型2. python是一种脚本解析语言,没有主函数的说法,python整个程序是自上而下执行的...原创 2021-03-18 14:53:09 · 3580 阅读 · 0 评论 -
python中常见进制之间的转换
很多情况下需要进行不同进制之间的转换,其中比较常用到的是python的内置函数或者是format函数进行进制的转换,一般使用内置函数进行转换的时候是先将控制台输入的字符串或者是自定义的字符串先转换为10进制然后将十进制转换为其他的进制,常见的是二进制、十进制、八进制、十六进制之间的转换,其中遵循一个原则是:其他进制转为十进制使用int函数,其他进制转为二进制使用bin函数,其他进制转为八进制使用oct函数,其他进制转为十六进制转为hex函数,并且是借助于10进制作为中间的桥梁进行转换,也就是使用到int函数原创 2021-03-08 17:50:03 · 4279 阅读 · 0 评论 -
python实现快速幂模板
在刷题的过程中可以使用类似于指数的规模来减小幂运算的运算时间,具体的代码如下:class Solution: def quickPower(self, x: int, n: int): res = 1 while n > 0: # 当为奇数的时候, 列出简单的例子会很好理解 if n % 2 == 1: res *= x x *= x原创 2021-02-03 17:58:58 · 612 阅读 · 0 评论 -
python中的优先队列PriorityQueue
普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出的行为特征。通常采用堆数据结构来实现。我们可以利用优先队列中元素被赋予优先级的这个特点可以保存来保存到当前状态下的比较大的元素值,这样就可以先处理优先级较高的元素PriorityQueue属于queue模块中的一个类,其中经常使用到的有三个方法:声明一个优先队列、往优先队列中加入元素、往优先队列中移除元素① 声明一个优先队列:queue原创 2021-01-15 11:53:56 · 13137 阅读 · 4 评论 -
python测试代码耗时
有的时候可以需要测试代码的运行时间,可以使用python中的time模块进行测试,在测试代码语句的前面记录开始时间,在测试结束之后记录结束时间,两个时间的差值就是代码的运行时间,下面是具体的例子,并且不同的电脑与编译器运行的结果是不一样的import timeif __name__ == '__main__': count, start = 0, time.time() for i in range(10 ** 4): for j in range(10 ** 4)原创 2021-01-11 10:40:11 · 1133 阅读 · 0 评论 -
python中itertools模块中的accumulate函数(计算前缀和)
很多时候我们会遇到需要计算前缀和的情况,python为我们提供了一个计算前缀和的函数(除了计算前缀和之外还可以处理其他的情况):itertools.accumulate(iterable[, func, *, initial=None]),函数中的参数有三个,第一个参数为传递的迭代器参数,第二个参数为func函数,可以为max、min或者是operator.mul(),第三个参数是一开始计算的参数,下面是python官方文档的相关介绍:创建一个迭代器,返回累积汇总值或其他双目运算函数的累积结果值(通过可选原创 2021-01-10 11:53:25 · 4337 阅读 · 0 评论 -
python中random类随机数的相关操作
python中的random类提供了对于生成随机数等的相关操作,random类中常见的方法由如下几个:1.random.random():用来生成0-1之间的随机数(浮点数)2.random.uniform(a, b):用来生成一个指定范围内的随机符点数, 两个参数其中一个是上限,一个是下限3.random.randint(a, b):用于生成一个指定范围的整数4.random.randrange([start], stop[, step]): 从指定范围内,按指定基数递增的集合中 ...原创 2020-12-25 17:30:59 · 1414 阅读 · 9 评论 -
python标准库--heapq堆队列算法
这个模块提供了堆队列算法的实现,也称为优先队列算法。这个模块最常用的是将一个列表转换为一个堆,默认是小根堆(它的每个父节点的值都只会小于或所有孩子节点(的值)),而且常用的主要有三个方法:①heapq.heappush(heap, item):将 item 的值加入 heap 中,保持堆的不变性② heapq.heappop(heap):弹出并返回 heap 的最小的元素,保持堆的不变性。如果堆为空,抛出 IndexError 。使用 heap[0] ,可以只访问最小的元素而不弹出它③ heapq.原创 2020-12-04 21:52:56 · 811 阅读 · 0 评论 -
python求解两个list列表的交集
python求解两个list列表的交集常用的有以下两种方法:① 遍历其中一个列表检查当前遍历的元素是否存在于另外一个列表,如果存在那么将其加入到结果集中② 将两个列表转换为set集合,然后使用集合操作符&求解两个set集合的交集,最后可以使用list列表将并集的结果转换为list列表类型下面是具体的例子:if __name__ == '__main__': # 主要有两种方法求解两个列表的交集 list1 = [1, 2, 3, 4] list2 = [2,原创 2020-12-02 20:36:01 · 25923 阅读 · 1 评论 -
python使用lambda表达式对二维列表排序
在很多时候需要对二维列表的第一个元素或者是第二个元素按照升序或者是降序进行排序,python提供了lambda表达式方便我们自定义排序的规则,可以直接调用列表的sort方法进行排序(会修改当前的列表)或者是直接使用sorted方法进行排序(不会修改当前的列表),下面是具体的例子,其中在排序的时候需要写上:key=lambda x : ,x表示的是变量,也可以写成另外的变量,冒号后面跟着排序的参数,当一个参数的时候表示先对当前的参数进行排序,例如x[0]表示第一列的元素,x[1]表示第二列的元素...以此类推原创 2020-11-27 21:33:18 · 4593 阅读 · 0 评论 -
python拷贝列表的副本
在python中拷贝列表并且修改副本的时候不会改变原列表的方法由以下三种方法:1. 使用列表的切片操作进行拷贝2. 使用列表的copy方法进行拷贝3. 在循环中进行拷贝下面是具体的例子:if __name__ == '__main__': # 1. 使用切片操作 list1 = [1, 2, 3, 4] list2 = list1.copy() list2[2] = 10 print(list1) print(list2) #原创 2020-11-25 09:52:31 · 831 阅读 · 0 评论 -
python中的complex内置函数
python中的complex内置函数可以将数字或者字符串转化为虚数,如果第一个参数为字符串那么不需要指定第二个参数,转换为复数的好处是我们可以计算二维平面中两点之间的距离if __name__ == '__main__': # 将(1, 2)转换为对应实部与虚部的虚数 a = complex(1, 2) print(a) # 将一个数字转化为虚部为0的虚数, a = complex(1) print(a) # 将字符串转化为虚数 a原创 2020-11-23 20:33:25 · 743 阅读 · 0 评论 -
python中对复数取绝对值来计算两点之间的距离
在二维平面会涉及到两个变量x, y,并且有的时候需要计算两个二维坐标之前的距离,这个时候将二维坐标转化为复数的话那么就可以使用python中的abs绝对值函数计算两个点之间的距离或者是计算复数的模,当我们将两个复数对应的坐标相减然后对其使用abs绝对值函数那么得到的就是两点之间的距离(对复数取绝对值得到就是复数的模长)if __name__ == '__main__': points = [[1, 0], [0, 1], [2, 1], [1, 2]] for i in points:原创 2020-11-23 20:15:30 · 2713 阅读 · 0 评论 -
python中的解包操作
在看别人写的python代码的时候,有时候会看到在变量前面加上一个*或者是**,上网找了一下相关的资料发现这个星号原来是python中的解包操作,相当于将一个容器中的元素取出来然后分配给不同的对象,下面是我看别人写的博客自己的一些理解:(1) 一个星号解包① 解包可以使用在多个变量赋值或者是函数调用中,并且任何可迭代的对象都支持解包,其中包括列表/字符串/元组/字典/集合等这些常见的可迭代对象a, b = 1, 2a, b = b, aprint(a, b)# 任何可迭代的对象都可以解原创 2020-11-23 16:28:07 · 7225 阅读 · 0 评论 -
python中re模块中的split字符串分割方法
在很多时候都需要对字符串以某个字符或者是特定的表达式进行分割得到我们需要的字符串,比以空格分割字符串等,在python语言中,可以使用re模块中的split方法来分割字符串,其中第一个参数表示需要分割的分割字符串对应的正则表达式,第二个参数是需要分割的字符串,下面是具体的例子:import reif __name__ == '__main__': s = re.split("\d+", "9392abc321ewooewo") print(s) # +表示匹配一个或者是多个原创 2020-11-22 20:33:45 · 2748 阅读 · 0 评论 -
python中的正负无穷数字
python中的正负无穷可以为float("inf"),float("-inf")if __name__ == '__main__': print(float("inf")) print(float("-inf"))原创 2020-11-20 20:05:21 · 778 阅读 · 0 评论 -
python中bisect模块-查找与插入元素维护列表的有序性
python中有一个用于二分查找与插入的bisect模块,可以用来寻找列表中第一个大于或者是等于目标值的数组下标,其中bisect模块包含几个方法,并且方法中可以传递四个参数,例如模块中的bisect_left方法bisect.bisect_left(a, x, lo=0, hi=len(a))第一个参数表示查找的有序列表,第二个参数表示待查找的目标值,第三、四个参数表示列表中查找的范围,不写默认是查找的是列表的整个范围bisect_left方法对于查找目标值x,若x存在于有序列表中那么返回列表原创 2020-11-09 16:04:26 · 464 阅读 · 0 评论 -
更相减损术求解最大公约数
求解两个int类型数字a, b的最大公约数的常用的办法一般有两种:第一种是辗转相除术,第二种是更相减损术,下面使用更相减损术求解最大公约数:设A > B,A = ax, B = bx 则C = A - B = ax - bx,所以A、B、C的最大公约数也为x,所以可以转换为:如果A > B,则 gcd(A,B) = gcd(B,A-B)如果A < B,则 gcd(A,B) = gcd(A,B-A)下面是具体的程序代码:class Solution: def gc原创 2020-11-07 21:27:37 · 1550 阅读 · 0 评论