python
撒哈拉拉倒吧
不积跬步无以至千里,不积小流无以成江海~
展开
-
华为OD机考十题解答-- Python3
华为OD机试Python解法原创 2022-06-13 12:34:39 · 3719 阅读 · 0 评论 -
Python--字典的操作
字典是python中的一种数据结构,称为映射,字典的作用和列表类似,都是用来存储对象的容器,列表存储数据的性能很好,但是查询数据的性能很差,字典中每一个元素都有一个唯一的名字,通过这个唯一的名字可以快速的查找到指定的元素,在查询元素的时候,字典的效率是非常快的。字典中的每个对象都有一个唯一的名字,这个名字被称为key,通过key可以快速的查询value,这个对象称为value。新建一个空字典dic=dict()dic={}字典的值可以是任意对象,字典的键是任意的不可变对象且不能重复。创建新的字典原创 2022-05-09 20:51:26 · 905 阅读 · 0 评论 -
Python--列表的操作
列表是python中的一种数据结构,英文是list定义一个空列表有两种方法list_new = list()new_list = []#⚠️这两种定义方式都是可以的定义一个非空列表,列表中的元素是任意的,元素可以是任何类型list_new = [1,'hello',[1,3],False,{'name':'william'},{1,4},(3,5)]切片获取元素print(list_new[2:5])#打印结果:[[1, 3], False, {'name': 'william'}]原创 2022-05-06 15:10:53 · 948 阅读 · 0 评论 -
Python--字符串的操作
str 字符串对应的方法字符串一旦定义,其中的元素就不能更改string='hello world'⚠️将所有小写字母转为大写字母,转换后的新字符串和原字符串的内存地址是不一样的`print(string.upper())` #打印结果:HELLO WORLD⚠️将大写字母转为小写是用lower(),转换后的新字符串和原字符串的内存地址是不一样的string1="HELLO WORLD"print(string1.lower()) #打印结果:hello world统计字符串中某个原创 2022-05-05 20:03:03 · 644 阅读 · 0 评论 -
Python--类属性、实例方法、类方法、静态方法
class A: #定义一个类 # 类属性,直接在类中定义的属性是类属性 # 类属性可以通过类或者是类的实例都可以访问到 # 类属性只能通过类对象来修改,无法通过实例对象修改 count = 0 # 实例属性,通过实例对象添加的属性属于实例属性 # 实例属性只能通过实例对象来访问和修改,类对象无法访问修改 def __init__(self, name): self.name = 'william' # 实例方法原创 2022-05-02 23:45:11 · 488 阅读 · 0 评论 -
Python--模块化
模块化模块化指将一个完整的程序分解为一个一个小的模块;通过将模块组合,来搭建一个完整的程序;不采用模块化,统一将所有的代码编写到一个文件中;采用模块化,将程序分别编写到多个文件中;模块化的优点1、方便开发 2、方便维护 3、模块可以复用;在python中一个py文件就是一个模块,要想创建模块,实际上就是创建一个python文件;注意:模块名要符合标识符的规范在一个模块中引入外部模块1、import 模块名2、import 模块名 as 模块别名可以引入同一个模块多次,但是模块的实例只会原创 2022-05-01 20:01:48 · 694 阅读 · 0 评论 -
Python内置函数--isinstance()、issubclass()
isinstance()、issubclass()介绍python中有两个内置函数,可能不是很常用,但是还是要知道这两个内置函数是干嘛用的#用来检查一个对象是否是一个类的实例isinstance(__0bj,__class_or_tuple)#用来检查一个类是否是另一个类的子类issubclass(__cls,__class_or_tuple) ...原创 2022-05-01 14:48:11 · 632 阅读 · 0 评论 -
Python3--property装饰器(面向对象三大特性之封装)
class Person: def __init__(self,name,age): self._name = name self._age = age #proper装饰器,用来将一个get方法,**转换为对象的属性** #添加为property装饰器以后,我们就可以像调用属性一样使用get方法 #使用property装饰的方法,方法名必须和属性名是一样的 @property def name(self,name): return self._name #setter方法的装饰原创 2022-04-30 19:33:56 · 295 阅读 · 0 评论 -
算法--12.堆排序前传-树与二叉树
什么是树?树是一种数据结构。 比如:目录结构树是一种可以递归定义的数据结构树是由n个节点组成的集合:1、如果n=0,那这就是一棵空树2、如果n>0,那存在1个节点作为树的根节点,其他节点可以分为m个集合,每个集合本身又是一棵树重要概念根节点、叶子节点树的深度(高度)树的度孩子节点/父节点子树什么是二叉树二叉树:度不超过2的树每个节点最多有两个孩子节点两个孩子节点被区分为左孩子节点和右孩子节点如下图满二叉树与完全二叉树满二叉树:一个二叉树,如原创 2021-06-08 10:16:53 · 93 阅读 · 0 评论 -
算法--11.快速排序
# -*- coding:utf-8 -*-# @Time :2021/5/28 14:42# @Author :wangwei# @Software :PyCharmdef partition(li,left,right): tmp = li[left] while left < right: while left < right and li[right]>=tmp:#从右面找比tmp小的数 right -=原创 2021-05-31 10:28:54 · 84 阅读 · 0 评论 -
算法--10.插入排序
插入排序以扑克牌为例进行讲解初始时手里(有序区)只有一张牌每次(从无序区)摸一张牌,插入到手里已有牌的正确位置如下图:假设我们现在手里有这样几张牌[2,1,5,3,7,9,8,4,6],2是我们手里的牌,而2后面的牌是我们要依次去摸的牌,规定我们每次只能摸一张牌,且手里的牌和摸到的牌需要根据从小到达顺序排列好,那么我们将实际问题以代码的形式展示:def insert_sort(li): for i in range(1,len(li)):#摸到的牌的下标,摸牌的次数原创 2021-05-25 22:39:47 · 85 阅读 · 0 评论 -
算法--9.选择排序(Select sort)
选择排序什么是选择排序一趟排序记录最小的数,放到第一个位置再一趟排序记录列表无序区最小的数,放到第二位置…算法关键点:有序区和无序区最小数的位置,记录无序区最小数的位置,默认的无序区的第一个数为最小数,通过后面的数和前面的数比较,最后更新最小数的位置,继续遍历完之后就会保存成一个有序的数列。实际举例def select_sort(li): for i in range(len(li)-1): min_location = i for j in ran原创 2021-05-23 14:09:43 · 125 阅读 · 0 评论 -
算法--8.冒泡排序(Bubble Sort)
什么是冒泡排序?冒泡排序(Bubble Sort)列表每两个相邻的数,如果前面比后面大,则交换这两个数一趟排序完成后,则无需区减少一个数,有序区增加一个数代码关键点:趟、无序区范围举例图中是一个列表,列表中的元素排序以及对应的索引如图所示:当进行第i趟的排序时无序区的范围(target_list[0,n-i],元素是n-i个,无序区最后一个数的索引是n-i-1)需要进行排序的趟数:len(target_list)-1解析:第0趟排序第0个元素是7,此时指针指在7的位置,比第1个元素原创 2021-05-16 12:56:59 · 128 阅读 · 0 评论 -
算法--7.列表排序
什么是排序?排序:将一组“无序”的记录列表调整为“有序”的记录列表。什么是列表排序?列表排序:将无序列表变为有序列表输入:列表输出:有序列表排序的种类升序降序内置排序函数sort()常见排序算法一般:冒泡排序、选择排序、插入排序常用:快速排序、堆排序、归并排序其他:希尔排序、计数排序、基数排序...原创 2021-05-16 11:23:28 · 131 阅读 · 0 评论 -
算法--6.二分查找(Binary search)
什么叫二分查找?二分查找:又叫折半查找,从有序列表的初始候选区lis[0,n]开始(初始候选区中的元素就是列表中的所有元素),通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。二分查找实例二分查找的实例:在列表[1,2,3,4,5,6,7,8,9]中找出3所在的索引。通过代码运行的截图可以看出该列表的元素3的索引位置是2。def binary_search(target_list, target_value): left = 0 right = len(target_li原创 2021-05-15 23:03:05 · 323 阅读 · 0 评论 -
算法--5.顺序查找
什么是查找?在一些数据元素中,通过一定的方法找出与给定的关键字相同的数据的过程。什么是列表查找?列表查找也可以叫做线性表查找,就是从列表中查找元素输入:列表,待查找元素输出:元素下标(当元素不存在时返回None什么是内置列表查找函数?index()什么是顺序查找?顺序查找(Linear Search):也叫线性查找,从列表第一个元素开始,顺序进行搜索,直到找到元素或搜索到元素列表的最后一个元素为止。下面使用代码来展示一下顺序查找:def linear_search(target_l原创 2021-05-14 12:50:39 · 280 阅读 · 0 评论 -
算法--4.汉诺塔问题
递归算法实际问题解决比较有名的递归算法事例-汉诺塔问题的传说如下:大梵天在创造世界的时候建了三根金刚石柱子,在一根柱子上从下到上从大到小按顺序摞着64个黄金罗盘,大梵天命令婆罗门把圆盘从下面开始按照大小顺序重新放到另外一个柱子上,小圆盘上不能放大圆盘,在三根柱子之间只能移动一次圆盘,64根柱子移动完毕之日,就是世界毁灭之时。我们画个图来简单理解一下,如下图:如果去移动64个盘子将会耗费异常长的时间,在这里我们用3个盘子的移动来理解,3个盘子就是将上面的两个盘子看成一个整体x,最底下的盘子是一个整体原创 2021-05-12 11:06:43 · 196 阅读 · 0 评论 -
算法--3.递归
递归的复习递归的特点调用自身结束条件示例如下def func(x): if x>0: print(x) func(x-1)这里如果调用func()方法,并传参为3,即func(3),那么输出就是:321接下来画一个图来解释函数的调用执行,这里的结束条件就是x<=0,所以只会输出三次:...原创 2021-05-11 12:24:35 · 266 阅读 · 0 评论 -
算法--2.空间复杂度
判断空间复杂度空间复杂度是评估算法占用内存大小的式子(单位)空间复杂度的表示方式和时间复杂度的完全一样1.算法使用了几个变量:O(1)2.算法使用了长度为n的一维列表:O(n)3.算法使用了m行n列的二维列表:O(mn)这里稍微做一下解释:当算法中使用了几个变量甚至多个变量的时候,空间复杂度就只是O(1),这里的1也是单位。空间换取时间的概念在研究一个算法的时候,时间远比空间重要,大多数的算法宁可占用更多的内存,也要尽量让时间越快。在实际应用中的分布式计算也是一种。(学习笔记原创 2021-05-10 10:17:53 · 106 阅读 · 0 评论 -
算法--1.估计算法运行效率与时间复杂度
一.时间复杂度时间复杂度是用来评估算法运行时间的一个式子(单位);一般来说,时间复杂度高的算法比复杂度低的算法慢;括号中的数字不论是1还是n,或是n的n次方,这些都是单位,一个衡量单位。可以使用时间复杂度来判断一个程序的运行快慢。 1.print('hello') 时间复杂度为O(1) 2. for i in range(n): print('hell') 时间复杂度为O(n)3.for i in range(n): print('hello') for原创 2021-05-09 14:30:58 · 497 阅读 · 0 评论 -
力扣一题--丑数
力扣一题--丑数为了提升自己,开始刷题题目:丑数生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入为了提升自己,开始刷题从一篇学习python的公众号接触到力扣这个网站,所以我也开始了自己的刷题之路,以前是在网上找的算法题去做,现在有了这样的一个专业的网站,真是兴奋不已,但是兴奋不已的同时,发现力扣上简单的题型也够我扣半天的,原创 2021-04-11 17:34:48 · 148 阅读 · 0 评论