python知识
铁锤2号
干啥啥不会~
展开
-
python选择排序的思想和实现
假设有一个list,a[0],a[1],a[2],……,a[n],对它进行排序,我们先从0到n这个位置找到最小的数,然后将这个最小的数与a[0]进行交换,然后,从a[1]到a[n]就是我们接下来要排序的list我们可以从1这个位置找出最小值,然后将这个最小值与a[1]交换,之后,a[2]到a[n]就是我们接下来要排序的序列每一次,我们都从序列中找出最小的值,然后把它与第一个元素交换位置,这样下去,待排序的元素就会越来越少,直到最后一个def select_sort(lst): for i in ra原创 2021-05-07 09:49:50 · 146 阅读 · 0 评论 -
python冒泡排序的原理和实现
冒泡排序的核心思想是相邻的两个数据进行比较,假设数列A有n个数据,先比较第一个和第二个数据,如果A1>A2,那么交换他们的位置,确保最大的那个数在右侧。接下来比较A2和A3,采用相同的规则,较大的数向右移动,最后会比较An-1和An的大小,如果An-1>An,那么交换他们的位置,这时,An是数列中最大的数你可能会发现,经过一轮后,数列仍然是无序的,但是此时我们完成的是将最大的数放在最右侧了,即数列的末尾。接下来要做的事,就是简单重复前面的过程,对于整个数列,先把An排除在外面,对n-1个数原创 2021-05-07 09:35:12 · 294 阅读 · 0 评论 -
python插入排序实现及详解
插入排序的思想:插入排序的思想就是将待排序的数据插入到其合适的位置。我们先从一个简单的例子开始,假如现在有lst= [1,2,6,7,5]这个list基本有序,只要将5放到6之前就能完成排序。从7开始遍历,比5大的向右移动,遇到小于5的就停下来.具体来说,从7开始向左遍历,遇到比5大的数向右移动,遇到小于等于5的数就停下来,这个位置就是5应该在的位置。但是当7向右移动的时候,占据的5的位置,那么就需要把5这个位置的数据保存下来,同时还需要把向左遍历时的索引记录记下来,最后索引停下的地方,就是5应该原创 2021-04-27 10:28:51 · 564 阅读 · 3 评论 -
python根据字典的值value进行排序
现在我们有一个字典是这样的:(输出比较长,只截取了一部分)我们需要根据字典的value进行排序,可以有以下方法:方法一:输出如下:(输出比较长,只截取了一部分)方法二:itemgetter()中的参数0代表根据key进行排序,1代表根据value进行排序方法三:先生成f,然后根据f运用sort进行排序即可...原创 2020-11-06 11:19:40 · 1244 阅读 · 0 评论 -
python去除两个列表中都存在的元素
list1 = ['a','b','c','d']list2 = ['a','b','e']list1_not_in_list2 = [i for i in list1 if i not in list2]list2_not_in_lis1 = [i for i in list2 if i not in list1]输出如下list1_not_in_list2就是删除list1中list1和list2都存在的元素list2_not_in_lis就是删除list2中list1和list2都原创 2020-09-02 19:11:48 · 3735 阅读 · 0 评论 -
python类的多态学习笔记
1.重写多态这个概念依赖于继承,因为继承,使得子类拥有了父类的方法,这里就产生了一个问题,如果子类有一个方法和父类的方法同名,那么子类在调用这个方法时,究竟是调用子类自己的方法还是父类的方法呢?class Base(): def print(self): print("base")class A(Base): def print(self): print("A")a = A()a.print()输出为A如果我们对A的print进行修原创 2020-08-31 21:20:28 · 154 阅读 · 0 评论 -
python类的继承学习笔记
继承是创建新类的方式,python中的继承,可以继承一个或继承多个,新建的类被称之为派生类或者子类,被继承的类是父类,可以称之为基类,超类。1.单继承class Car(object): def __init__(self,speed,brand): self.speed = speed self.brand = brand def run(self): print("{brand}在行驶".format(brand=se原创 2020-08-31 20:31:04 · 181 阅读 · 0 评论 -
python类中的self的理解
初次接触类的概念,在学习的网页上,对self的解释是self是方法的一个参数,在方法调用的时候,这个参数是默认传参数的我们看一个例子class Stu: def __init__(self,name,age): print("在__init__方法中id:",id(self)) self.name = name self.age = age def run(self): print("在run方法中",id(sel原创 2020-08-26 19:29:35 · 679 阅读 · 0 评论 -
python的实例方法 类方法 静态方法笔记
名称 定义方法 权限 调用方法 实例方法 第一个参数必须是实例,一般命名为self 可以访问实例的属性和方法,也可以访问类的实例和方法 一般通过实例调用,类也可以调用 类方法 使用装饰器@classmethod修饰,第一个参数必须是当前类的对象,一般命名为cls 可以访问类的实例和方法 类实例和类都可以调用 静态方法 使用装饰器@staticmethod修饰,参数随意,没有self和cls 不可以访问类和实例的属性和方法原创 2020-08-24 21:18:36 · 159 阅读 · 0 评论 -
python排序算法之选择排序
选择排序的思想就是先找最小的,放第一位,然后在剩下的里面再找最小的,放第二位,以此类推def select_sort(lst): for i in range(len(lst)): min_num = i for j in range(min_num,len(lst)): #寻找min到len(lst)-1这个范围内的最小值 if lst[min_num] > lst[j]: mi原创 2020-07-24 21:47:10 · 148 阅读 · 0 评论 -
python排序算法之归并排序
合并两个有序集合有两个有序的序列,分别为[1,4,7],[2,3,5],现在考虑将这两个序列合并成一个有序的序列。首先创建一个新的序列,分别从两个序列中取出第一个数,1和2,1比2小,把1放到新的序列中第一个序列中的1已经放到新序列中,那么拿出4来进行比较,2比4小,把2放到新的序列中第二个序列中的2已经放到新序列中,那么拿出3来进行比较,3比4小,把3放到新的序列中第二个序列中的3已经放到新序列中,那么拿出5来进行比较,4比5小,把4放到新的序列中第一个序列中的4已经放到新序列中,那么拿出7来原创 2020-07-24 21:34:33 · 141 阅读 · 0 评论 -
python时间转换函数(时间戳转换为标准时间)
时间转换函数原创 2020-07-23 21:48:46 · 1279 阅读 · 0 评论 -
python排序算法之希尔排序
希尔排序是插入排序的改进版本,具体的思路看这位大佬的链接希尔排序代码如下(也参考了大佬的)def shell_sort(lst): n = len(lst) gap = n // 2 while gap >= 1: for j in range(gap,n): while j-gap >= 0: if lst[j] < lst[j-gap]: lst原创 2020-07-23 21:41:52 · 94 阅读 · 0 评论 -
python排序算法之插入排序
直接插入排序的思想就是前后两个数的比较,把小的放左边,接着继续往后,再把前面的比较一轮。比如显示比较两个数,大小比较好后继续往后,此时会再加入一个数,然后再把这三个数比较一次。以此类推。def directSort(lst): if len(lst) <= 1: return lst for i in range(1,len(lst)): while i > 0 and lst[i] < lst[i-1]: lst[原创 2020-07-23 21:05:06 · 91 阅读 · 0 评论 -
python基础值ascii码表总结
前面有几道与ascii相关的题目来总结下,加深下记忆分别是判断字符串是否全为小写字符串大写转小写python基础之实现lower函数废话不多说,先来看看ascii表,然后对照解析下首先要知道一个函数ord(),它返回的是一个字符的ascii值,如ord(“A”)为65,可以按照上面的表看出确实是65在实现lower函数中,思路就是要判断ascii码值是不是在65-90之间,如果是,说明这个字母是大写的,那么就要将其变为小写的,查表可知"a"的ascii值为97,之间的差值为32,所以可以得出原创 2020-07-22 20:41:38 · 12583 阅读 · 0 评论 -
python排序算法之快速排序
快速排序的思路可以总结为三个步骤1.从待排序数组中随机选取一个元素,作为基准值2.移动排序数组中的元素,基准值左侧的都大于它,右侧的都小于它3.根据基准值分类的两部分,重新进行步骤123#先实现分区def partition(lst,start,end): pivot = lst[start]#作为基准值 while start < end: while start < end and lst[end] >= pivot:原创 2020-07-21 21:44:11 · 115 阅读 · 0 评论 -
python基础之判断字符串是否全为小写
def islower(string): if not string: return False for item in string: if 65 <= ord(item) <= 90: return False return Trueif __name__ == "__main__": print(islower("232rrr"))原创 2020-07-20 21:36:59 · 2831 阅读 · 0 评论 -
python基础之字符串大写转小写
#思路分析 获得当前的字符后,要判断是否在A和Z之间,更专业的办法是通过ord函数获得这个字符的ascii码表的十进制,判断是否在65和90之间。如果是大写字母,#那么只要通过将十进制数加32来获得大写字母所对应的小写字母的十进制数值。def lower(string): if not string: return None lst = list(string) for index,item in enumerate(lst):原创 2020-07-20 21:36:12 · 708 阅读 · 0 评论 -
python基础之实现split函数
思路就是先找到分割的位置,那么就需要前面的split函数,接着分割即可def my_find(source,target,start=0): if not source or not target: return -1 if len(target) > len(source): return -1 if start < 0 or start >= len(source): return -1 for原创 2020-07-20 21:35:18 · 395 阅读 · 0 评论 -
python基础之实现lower函数
#实现lowerdef my_lower(string): if not string: return None lst = list(string) for index,item in enumerate(lst):#同时列出数字和下标 ascii_index = ord(item) if 65 <= ascii_index <= 90: s = chr(ascii_index+32)原创 2020-07-20 21:33:56 · 773 阅读 · 0 评论 -
python基础之实现replace函数
#实现replace 这个写法有点问题 只能替换一次 在my_replace中进行简单修改即可#第一步实现find字符串def my_find(source,target,start=0): if not source or not target: return -1 if len(target) > len(source): return -1 for index in range(start,len(source)-l原创 2020-07-20 21:32:09 · 1389 阅读 · 0 评论 -
python基础之排队接水
本来这题是拿来试试冒泡排序的,结果写了一晚上还没弄好,目前还是不能处理相同的值,以及输出还有问题。## 排队接水 有n个在一个水龙头前面排队接水,假如每个人接水时间为Ti,请编程找出n个人排队的一种序列,使得n个人的平均等待时间最小。#输入文件共两行 第一行为n(1<=n<=200);第二行分别表示第1个人到第n个人每人接水时间T1,T2,……Tn,每个数据之间有1个空格#输出文件有两行,第一行为一种排队顺序,即1到n的一种排列;第二行为这种排列方案下的平均等待时间#如 输入:10原创 2020-07-16 21:46:26 · 1274 阅读 · 0 评论 -
python排序算法之冒泡排序
万众期待的排序算法终于来啦 今天开始排序算法的学习第一个是冒泡排序冒泡排序的核心思想是相邻的两个数据进行比较 假设A有n个数据,先比较第1个和第2个数据,如果A1>A2 就交换他们的位置,确保较大的的那个数在右侧接下来比较A2和A3,采用相同的规则,较大的向右移动,最后会比较An-1和An的大小,如果An-1>An,那么交换他们的值,这时,An是数列中的最大值经过一轮比较后,数列还是无序的,但是最大值已经找到了,而且在队列的末尾。后面的思路就是排除这个最大值,继续上述的过程就可以了。原创 2020-07-15 21:33:20 · 227 阅读 · 0 评论 -
python基础之实现find函数
#实现find方法 这个是简单版的def my_find(ori_string,find_string): length = len(find_string) flag = 0 for i in range(len(find_string)): for j in range(len(ori_string)): if find_string[i] == ori_string[j] and find_string[i:i+len(find_s原创 2020-07-14 21:52:05 · 1913 阅读 · 2 评论 -
python基础之实现bin函数(python二进制转换)
思路分析:辗转相除法,拿当前值取余2,如果1,列表中append1,如果0,append0#实现bindef my_bin(num): lst = [] while num: if num % 2 == 1: lst.append('1') else: lst.append('0') num = num >> 1 lst = lst[::-1] r原创 2020-07-14 21:49:43 · 1422 阅读 · 0 评论 -
python基础之实现any函数
#实现any any函数用于判断给定的可迭代参数 iterable 中的所有元素是否至少有一个为Truedef my_any(obj): for item in obj: if item == True: return True else: return Falseif __name__ == "__main__": print(my_any([False,False,False]))...原创 2020-07-14 21:33:33 · 237 阅读 · 0 评论 -
python基础之实现all函数
#实现all all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 True,示例代码如下#lst = [True, False, True]#print(all(lst))def my_all(obj): flag = 0 for item in obj: if item == True: flag = flag + 1 if flag == len(obj): return True原创 2020-07-14 21:32:38 · 276 阅读 · 0 评论 -
python基础之实现enumerate函数
思路分析:在这题中,我们将会使用yield关键字,这是个生成器函数,该函数返回的是一个生成器yield有着和return相似的功能,都会将数据返回给调用者,不同之处在于,return执行后,函数结束了,而yield执行后,会保留当前的状态,等到下一次执行时,恢复之前的状态,继续执行。在函数内部,使用for循环通过索引遍历lst, 使用yield返回索引和索引位置上的元素。#实现enumerate enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时原创 2020-07-14 21:26:53 · 765 阅读 · 0 评论 -
python基础之实现len函数
#实现len 内置函数可以获得可迭代对象的长度,例如字符串,列表,元组,字典,集合。实现一个类似功能的函数,获得数据的长度。def my_len(obj): length = 0 for item in obj: length = length + 1 return lengthif __name__ == "__main__": lst = [1,2,3,4,5] dict_obj = { 'a':1,原创 2020-07-14 21:23:54 · 2525 阅读 · 0 评论 -
python基础之实现float函数
本题只将字符串类型的数字转换为float数据实现思路:重点是找到小数点的位置,然后除去相应的值,就能获得对应的小数#实现float 只将字符串转换为float类型的数据 如"34.22"转换为34.22str_int_dict ={ "0":0, "1":1, "2":2, "3":3, "4":4, "5":5, "6":6, "7":7, "8":8, "9":9}def my_float(string):原创 2020-07-14 21:22:24 · 1216 阅读 · 2 评论 -
python基础之实现str函数
本题只将int类型的数据转换成字符串思路分析:通过ascii码表获得与之对应的数字字符。假如数字是8,chr(5+48)就可以得到字符串3细节上,如果传入的字符串是0,那么返回字符串’0’如果传入的参数是负数,需要标识记录,最后再列表里append一个’-'字符串lst=[1,2,3],想要反转,lst=lst[::-1]def my_str(int_value): if int_value == 0: return '0' lst = [] is原创 2020-07-14 21:18:55 · 1467 阅读 · 0 评论 -
python基础之实现int函数
思路分析:首先建立一个字典,字符串的数字作为key,int类型的数字为value。在得到字符串中的数字后,要考虑是哪一位,遍历的过程是从左到右的,设置一个变量保存转换后的数据,每次循环都用这个变量乘10加上所遍历的数值#实现int 只将全是数字组成的字符串转换为数字 如 “432” 转换为 432str2int_dict = { "0":0, "1":1, "2":2, "3":3, "4":4, "5":5, "6":6, "7":7,原创 2020-07-14 21:09:12 · 736 阅读 · 0 评论 -
python基础之实现min函数
思路和max函数是一样的,不过是反过来的,遇到更小的就赋值给最小值#实现mindef my_min(seq): min_value = None if not isinstance(seq,(list,tuple)): return min_value if len(seq) == 0: return max_value min_value = seq[0] for item in seq: if not原创 2020-07-14 21:02:59 · 928 阅读 · 0 评论 -
python基础之实现sum函数
循环读取然后相加就可以def my_sum(lst): sum_res = 0 if not isinstance(lst,list): return sum_res for item in lst: if isinstance(item,(float,int)): sum_res = sum_res + item return sum_resif __name__ == '__main__': lst =原创 2020-07-14 20:59:12 · 1321 阅读 · 0 评论 -
python基础之实现max函数
思路分析:max函数返回序列中的最大值,当其中有非数字类型的数据的时候,可以直接忽略,如果序列是空的,可以直接返回None原创 2020-07-14 20:52:05 · 2785 阅读 · 0 评论 -
python基础之实现abs函数
实现思路为了保证程序的健壮性,需要对传入的数据进行检查,判断是否是数字类型。判断变量的类型可以使用isinstance函数,该函数的第一个参数是需要检查类型的对象,第二个参数可以是数据类型,也可以是一个元组,元组里是多个数据类型,只要满足其中一个就返回True。如果大于0直接返回即可,如果小于0乘-1就行def my_abs(number): if not isinstance(number,(float,int)): return number if number &原创 2020-07-14 20:36:09 · 1154 阅读 · 3 评论 -
python基础之集合的练习
lst1 = [1,2,3,5,6,3,2]lst2 = [2,5,7,9]set1 = set(lst1)set2 = set(lst2)#整数即在1中也在2中print(set1.intersection(set2)){2, 5}#整数在lst1中,不在lst2中print(set1.difference(set2)){1, 3, 6}#两个列表一共有哪些整数print(set1.union(set2)){1, 2, 3, 5, 6, 7, 9}上面代码都是在原创 2020-07-14 20:28:36 · 986 阅读 · 0 评论 -
python基础之字典基本操作
下面代码都是基于jupyter lab写的字典的内容如下dict = {“python”:95,“java”:99,“c”:100}1.字典的长度是多少2.请修改’java’ 这个key对应的value值为983.删除 c 这个key4.增加一个key-value对,key值为 php, value是905.获取所有的key值,存储在列表里6.获取所有的value值,存储在列表里7.判断 javascript 是否在字典中8.获得字典里所有value 的和9.获取字典里最大的v原创 2020-07-14 20:24:14 · 1032 阅读 · 0 评论 -
python基础之列表操作练习
lst=[2,5,6,7,8,9,2,9,9]1.在列表的末尾增加元素152.在列表的中间位置插入元素203.将列表[2, 5, 6]合并到lst中4.移除列表中索引为3的元素5.翻转列表里的所有元素6.对列表里的元素进行排序,从小到大一次,从大到小一次#1lst = [2,5,6,7,8,9,2,9,9]lst.append(15)lst[2, 5, 6, 7, 8, 9, 2, 9, 9, 15]#2lst.insert(4,20)lst[2, 5, 6, 7, 2原创 2020-07-14 20:20:28 · 925 阅读 · 0 评论 -
python基础之列表列表练习
lst = [2,5,6,7,8,9,2,9,9]1.找出列表里的最大值2.找出列表里的最小值3.找出列表里最大值的个数4.计算列表里所有元素的和5.计算列表里元素的平均值6.计算列表的长度7.找出元素6在列表中的索引#1 lst = [2,5,6,7,8,9,2,9,9]print(max(lst))9#2print(min(lst))2#3print(lst.count(max(lst)))3#4print(sum(lst))57#5print原创 2020-07-14 20:15:49 · 1563 阅读 · 0 评论