Python
Python
QYiRen
注:本人的CSDN文章皆为学习笔记方便自己查询或者需要学习的小伙伴浏览,不用于任何商业用途。来源为其他书籍或者学习视频,基本会在参考中注明,数据也基本都在里边。
展开
-
Pytorch安装20221029
Pytorch安装20221029原创 2022-10-29 20:04:14 · 1305 阅读 · 3 评论 -
Python实现二叉树定义、层次、先序、中序、后序遍历
class Node(object): """定义树节点""" def __init__(self,item): self.elem = item self.left = None self.right = Noneclass Tree(object): def __init__(self): self.root = None def add(self,item): .原创 2022-03-03 10:03:00 · 523 阅读 · 0 评论 -
Python实现二分查找(递归与非递归)
#二分查找时间复杂度最好为O(1),最坏为O(logn)def binary_search(alist, item): """递归实现二分查找""" n = len(alist) if n > 0: mid = n // 2 if alist[mid] == item: return True elif alist[mid] > item: return binary_se.原创 2022-03-03 09:53:51 · 922 阅读 · 0 评论 -
Python实现快速排序算法
def quick_sort(alist, first, last): if first >= last: return mid_value = alist[first] low = first high = last while low < high: while low < high and alist[high] >= mid_value: high -= 1 al.原创 2022-02-28 14:32:23 · 460 阅读 · 0 评论 -
Python实现希尔排序算法
def shell_sort(alist): """希尔排序又叫缩小增量排序,是插入排序的一种""" n = len(alist) gap = n // 2 while gap > 0 : for j in range(gap,n): i = j while i > 0 : if alist[i] < alist[i-gap] : .原创 2022-02-28 11:14:09 · 429 阅读 · 0 评论 -
Python实现冒泡排序算法
def bubble_sort(alist): n = len(alist) for j in range(n-1): for i in range(n-j-1): if alist[i] > alist[i+1]: alist[i] , alist[i+1] = alist[i+1] , alist[i]alist = [54,26,17,29,66]print(alist)bubble_sort(ali.原创 2022-02-28 10:10:57 · 389 阅读 · 0 评论 -
Python实现插入排序算法
def insert_sort(alist): n = len(alist) for j in range(1,n): i = j while i > 0: if alist[i] < alist[i-1]: alist[i] , alist[i-1] = alist[i-1] , alist[i] i -= 1 else: .原创 2022-02-28 09:57:53 · 453 阅读 · 0 评论 -
Python实现选择排序算法
def select_sort(alist): n = len(alist) #外层循环控制第几次选择排序的过程,一共要进行n-1次,从第二个元素开始进行操作,默认第一个元素已经有序 for j in range(n-1): min_index = j #内层循环寻找该轮选择排序过程中最小或最大的元素索引 for i in range(j+1,n): if alist[min_index] > alis.原创 2022-02-28 09:57:07 · 850 阅读 · 0 评论 -
Python实现单向循环链表
#单向循环链表定义#定义节点同单链表class Node(object): def __init__(self,elem): self.elem = elem self.next = Noneclass singleCycleLinkList(object): def __init__(self,node=None): self.__head = node if node : nod.原创 2022-02-24 11:41:31 · 519 阅读 · 0 评论 -
Python实现单链表
class Node(object): """定义节点""" def __init__(self,elem): self.elem = elem #节点数值 self.next = None #节点的指针class SingleLinkList(object): """定义单链表""" def __init__(self,node=None): """头结点初始化""" self.原创 2022-02-24 11:06:36 · 532 阅读 · 0 评论 -
Python实现图(Graph)及其算法(BFS)
注:参考书籍《Python数据结构与算法》1.图的抽象数据类型定义Graph()新建一个空图;addVertex(vert)向图中添加一个顶点(vert)实例;addEdge(fromVert,toVert)向图中添加一条有向边,用于连接顶点fromVert,toVertaddEdge(fromVert,toVert,weight)向图中添加一条带权重(weight)的有向边getVertex(vertKey)在图中找到名为vertKey的顶点getVertices()以列表形原创 2022-01-24 14:58:48 · 11068 阅读 · 5 评论 -
Python使用列表实现BFS,DFS
1.图的定义及术语顶点:又称节点,是图的基础部分。边:图的另一基础部分,两个顶点通过一条边相连,表示它们之间存在关系。边若是单向的,则称图为有向图;若是双向的,称为无向图。权重:边上可以带权重,表示从一个顶点d到另一个顶点的成本图:图用G来表示,G=(V,E),V是一个顶点集合,E是一个边的集合。每一条边是一个二元组(v,w),其中v,w∈V。二元组中还可以添加权重。实例如:2.图的存储(邻接矩阵,邻接表)邻接矩阵:用二维矩阵实现图,每一行每一列都表示图的一个顶点,二原创 2022-01-11 14:49:22 · 307 阅读 · 0 评论 -
Python正则表达式(re模块)
#re模块(正则表达式):用作模糊匹配 # 分为两种:①元字符:".","^","$","*","+","?","{}","[]","|","()","\" # ②普通字符import re#通配符"."(除\n以外所有字符都可匹配)print(re.findall('a.c','abcabcabcadcadcabbbc')) #['abc', 'abc', 'abc', 'adc', 'adc']#"^"(开头匹配)print(re..原创 2021-11-17 14:13:04 · 430 阅读 · 0 评论 -
栈应用(括号匹配、十进制转换二进制)
括号匹配#导入定义的栈from Algorithm import Stack_1#定义括号匹配函数#参数传入所要匹配的括号字符串def parChecker(symbolString): #定义一个栈,用来存储左括号,弹出并与右括号比较 s = Stack_1.Stack() #设置是否匹配成功标志 balanced = True #索引,匹配成功一个就匹配后一个字符 index = 0 while index<len(symbol原创 2021-11-23 08:49:25 · 191 阅读 · 0 评论 -
Python利用栈实现中序表达式转换后序表达式
"""中序表达式转为后序表达式:(假设中序表达式是一个以空格分隔的标记字符串) ①创建用于保存运算符的空栈opstack,以及一个用于保存结果的空列表 ②使用字符串split方法将输入的中序表达式转换成一个列表 ③从左到右扫描这个标记列表 如果标记是操作数,将其添加到结果列表的末尾; 如果标记是左括号,将其压入栈中; 如果标记是右括号,反复从opstack中弹出元素,直到弹出对应的左括号。将栈中取出的么一个运算符都添加到结果列表的末.原创 2021-11-29 15:28:56 · 1048 阅读 · 0 评论 -
Python实现队列,双端队列
1.队列队列是元素的有序集合,在尾部添加元素,头部移除元素(类似于排队)2.队列特性先进先出(FIFO,firstinfirst out)3.队列抽象数据类型 Queue():创建一个空队列,不需要参数,返回一个空队列 enqueue(item):在队列尾部添加一个元素,需要一个元素作为参数,不返回任何值 dequeue():从队列头部移除一个元素,不需要参数,返回一个元素,且修改队列的内容 isEmpty():检...原创 2021-11-29 17:28:25 · 981 阅读 · 0 评论 -
栈实现(Python数据结构与算法分析)
①利用列表实现栈,将列表末尾作为栈顶#列表尾部是栈的顶端class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self, item): self.items.append(item) def pop(self): return self.items.po原创 2021-11-23 08:46:04 · 448 阅读 · 0 评论 -
Python(Filter函数)
#原理,去除不想要的元素def func(arr): return arr.startswith('1')def filter_test(func,array): ret = [] for i in array: if not func(i): ret.append(i) return retli = ['jiangqi','dwj','1qq','1dd']print( filter_test(func,li))pri.原创 2021-11-13 10:13:50 · 110 阅读 · 0 评论 -
Python基础知识(第二部分)
# 元祖tuple(1,2,)# 元祖元素不可以被修改,可以增加删除元素,内部元素有序(可以索引,切片),可以for循环# tu = tuple(str) 字符串转换为元组# tu = tuple(list) 列表转换为元祖# list = list(tuple) 元祖转换为列表# 元祖转换为字符串# tu = ('name','age','1','2','3',)# s = ''.join(tu) #join中放入的元素需要是字符串类型的# print(s)# .原创 2021-11-12 11:26:32 · 343 阅读 · 0 评论 -
Python(函数式编程)
#函数式编程:编程语言定义的函数+数学意义的函数#通俗来讲,函数式就是用编程语言去实现数学函数# 这种函数内对象是永恒不变的,要么参数是函数,要么返回值是函数# 没有for循环和while循环,所有的循环都由递归去实现,无变量的赋值(即不用变量去保存状态)#函数式编程# def func(x):# return 2*x+1#面向过程# def function (x):# a = 2*x# b = a +1# return b...原创 2021-11-12 11:29:32 · 64 阅读 · 0 评论 -
Python(lambda表达式)
# 匿名函数lambda表达式# 一个简单函数# def func(x):# return x+1# print(func(10))# print(func)# 转换为lambda表达式实现# func = lambda x: x + 1 # x是匿名函数形参,x+1是返回值# print(lambda x: x + 1)# print('lambda表达式实现 :', func(10)) #10传递给x,执行x+1,然后返回输出# func = lambd.原创 2021-11-12 11:28:10 · 74 阅读 · 0 评论 -
Python基础知识(第一部分)
# python运算符# ①+,-,*,/,//(取商),**(幂),%# ②in ,not in(判断某一个字符是否在字符串里面)# ③布尔值True(1),False(0)# ④==,>=,<=,!=(<>),<,># ⑤and,or,not# ⑥赋值运算符+=,-=,*=,/=,%=,**=,//=# 数字# a = input()# b = int(a)#可以使用int将字符串转换为整型数字# print(type(a))# print.原创 2021-11-12 11:21:05 · 150 阅读 · 0 评论 -
简单的加法(Python实现)
# 输入一个数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。# 如果有多对数字的和等于输入的数字,输出任意一对即可。# 例如:输入数组1 2 4 7 11 15和数字15。# 由于4+11=15,因此输出4和11l = input("请输入数字中间以空格隔开:")# print(type(l))l = list(map(int,l.split()))n = int(input("请输入一个整数:"))def func(): st = set() fo.原创 2021-11-13 11:34:19 · 6687 阅读 · 0 评论 -
逆序去重(Python实现)
# 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。 保证输入的整数最后一位不是0。# 输入描述: 输入一个int型整数# 输出描述: 按照从右向左的阅读顺序,返回一个不含重复数字的新的整数# 示例1 输入: 30010733 输出: 3701num = input("请输入一个int型整数:")res =''st = set()for i in num[::-1]: if i not in st: res+=i st.a.原创 2021-11-13 11:32:46 · 414 阅读 · 0 评论 -
Python(迭代器协议)
#迭代器协议:(for循环工作机制)对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,#要么就引起一个StopIteration异常,终止迭代(只能往前不能退后)#例如列表list,for循环时,①将列表调用其内部__iter__方法使之成为可迭代对象(iter_L = L.__iter__)#②再使用iter_L内部的next方法,直到捕捉到StopIteration异常#三元运算符name = 'jq'print(1 if name == 'jq' else 2).原创 2021-11-13 11:10:44 · 253 阅读 · 0 评论 -
Python(Map函数)
#内部逻辑def map_test(func,l): #参数是函数和一个列表 ret = [] for i in l: res = func(i) ret.append(res) return retprint(map_test(lambda x:x+1,[1,2,3,4,5,6]))#map内置函数#map得到的是一个迭代器地址(python2中map得到的就是一个列表,不用转换)#第一个参数可以是自己实现的函数功能.原创 2021-11-12 12:53:31 · 298 阅读 · 0 评论 -
Python(Reduce函数)
#reduce函数,在python2中可以直接使用,python3中需要导入包#例子def reduce_test(func,array,init=None): if init is None: res = array.pop(0) else: res = init for i in array: res = func(res,i) return resdef func(x,y): return x*y.原创 2021-11-13 10:38:02 · 261 阅读 · 0 评论 -
求最大的没有重复字符的子字符串长度(Python实现)
# 输入一个字符串,求最大的没有重复字符的子字符串长度# 比如:输入huaweicloudaigallery# 输出 9 (huaweiclo或aweicloud或weiclouda)string = input("输入字符串:")def func(): length,str = 0,'' maxlength = 0 for i in range(len(string)): str = string[i] for j in range(i+.原创 2021-11-13 11:33:25 · 444 阅读 · 0 评论 -
奇妙的三元组(Python实现)
# 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?# 请你找出所有满足条件且不重复的三元组。# 注意:答案中不可以包含重复的三元组。# 示例:# 给定数组 -1 0 1 2 -1 -4# 满足要求的三元组集合为:# -1 0 1# -1 -1 2def find_three_nums(l): nums_list = [] for i in range(0,len(l)-2): .原创 2021-11-13 11:31:24 · 2507 阅读 · 0 评论 -
回文判断(Python实现)
#如果给定一个字符串,判断是否是回文#字符串逆序处理# string_01 = input("输入字符串:")# string_02 = reversed(list(string_01))# print(string_01)# print(string_02)# string_03 = ''# for i in string_02:# string_03 = string_03+i# if string_01 == string_03:# print("是回文")#.原创 2021-11-13 11:30:34 · 6340 阅读 · 0 评论 -
扫雷(Python实现)
输入 数据的第一行有2个整数n, m(1 <= n, m <= 50),表示一个n * m的区域,n行m列 接下来n行每行有一个长度为m的字符串,字符串只包含2种字母,”.”和”X” 其中”.”表示这个地方不是地雷,”X”表示这个地方是地雷。 输出 请输出n行内容,每一行是一个长度为m的字符串,由数字和符号”X”组成, 如果这个点不是地雷,那么就表示这个点周围有几颗地雷,否则这个点存放符号”X”,表示这个点是地雷。 输入样例: 3 5 ..... ..XX. ..... 输出样例..原创 2021-11-15 16:57:42 · 2505 阅读 · 0 评论