- 博客(24)
- 资源 (2)
- 收藏
- 关注
原创 Python实现单链表
Python实现单链表单向链表也叫单链表,是链表中最简单的一种形式,它的每个节点包含两个域,一个信息域(元素域)和一个链接域。这个链接域指向链表中的下一个节点,而最后一个节点的链接域则指向一个空值。表元素域elem用来存放具体的数据。链接域next用来存放下一个节点的位置(python中的标识)变量p指向链表的头节点(首节点)的位置,从p出发能找到表中的任意节点。节点实现class SingleNode(object): """单链表的节点""" def __ini__(s
2020-08-12 22:03:16
750
原创 Python实现快速排序
Python3实现快速排序排序原理:首先设定一个分界值,通过该分界值,将数组分为左右两部分;将大于或等于分界值的数据放到数组右边,小于分界值的数据放到数组的左边,此时左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值;然后,左边和右边的数据都可以独立排序。对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,同样在左边放置较小值,右边放置较大值。右侧的数组数据也可以做类似处理。重复上述过程,可以看出,这是一个递归定义。通过递归将左侧部分排好序后,再递归排好右侧
2020-08-12 20:00:26
254
原创 Python实现归并排序
Python3实现归并排序排序原理:将一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每个子组的元素个数是1为止。将相邻的两个子组进行合并成一个有序的大组。不断地重复步骤2,直到最终只有一个组为止。代码实现:def merge_sort(merge_list): n = len(merge_list) if n < 2: return merge_list mid = n // 2 left_list = merg
2020-08-12 16:04:49
263
原创 Python实现希尔排序
Python3实现希尔排序排序原理:选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组;对分好组的每一组数据完成插入排序;减小增长量,最小减为1,重复第二步操作。代码实现:def shell_sort(shell_list): n = len(shell_list) gap = n // 2 while gap > 0: for i in range(gap, n): j = i w
2020-08-12 11:25:39
376
原创 《Python3.8.5文档》笔记:函数式编程之lambda表达式
《Python3.8.5文档》笔记:函数式编程之lambda表达式编写函数式风格程序时,我们经常会需要很小的函数作为谓词函数或者以某种方式来组合元素。如果存在合适的Python内置的或者其他模块中的函数,就一点也不需要定义新的函数,例如:stripped_lines = [line.strip() for line in lines]existing_files = filter(os.path.exists, file_list)如果不存在我们需要的函数,就必须自己编写。一种编写小函数的方式是
2020-08-08 20:30:01
324
原创 Python实现插入排序
Python3实现插入排序排序原理:把所有的元素分为两组,已经排序的和未排序的。找到未排序的组中的第一个元素,向已经排序的组中进行插入。倒序遍历已经排序的元素,依次和待插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他的元素向后移动一位。代码实现:def insert_sort(insert_list): # 当前位置从下标为1的元素开始插入 for i in range(1, len(insert_list)): #
2020-08-06 22:02:50
189
原创 Python实现选择排序
Python3实现选择排序排序原理:每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处的值大于其他某个索引处的值,则假定其他某个索引处的值为最小值,最后可以找到最小值所在的索引。交换第一个索引处和最小值所在的索引处的值。代码实现:def select_sort(select_list): n = len(select_list) for i in range(n-1): m = i for j i
2020-08-06 21:59:58
672
原创 Python实现冒泡排序
Python3实现冒泡排序排序原理:比较相邻的元素。如果前一个元素比后一个元素大,就交换这两个元素的位置。对每一对相邻元素做同样的工作,从开始第一对元素到结尾的最后一对元素。最终最后位置的元素就是最大值。代码实现:def bubble_sort(bubble_list): n = len(bubble_list) # 思路2: # for i in range(n-1): for i in range(n-1, 0, -1): flag = T
2020-08-06 21:58:24
206
原创 《Django3.0文档》笔记:Models
《Django文档3.0》笔记:Models模型类模型可以准确且唯一地描述数据,其包含了存储数据的重要字段。每个模型都是一个Python的类,这些模型类继承自django.db.models.Model,模型类的每个属性都相当于数据库表的一个字段。一般来说,每个模型类映射一张数据库表,每个模型类的实例代表数据库表的一行记录,每个字段映射为数据库表的一列。通过模型类和Django提供的一套数据库抽象API,可以创建、检索、更新和删除对象。from django.db import modelscl
2020-08-04 22:20:12
423
原创 《Python3标准库》笔记:heapq堆排序算法
《Python3标准库》笔记:heapq堆排序算法堆的概念 堆(heapq)是一个树形数据结构,其中子节点与父节点有一种有序关系。二叉堆(binary heap)可以使用一个有组织的列表或数组表示,其中元素N的子元素位于2*N+1和2*N+2(索引从0开始)。这种布局允许原地重新组织堆,从而不必在增加或者删除元素时重新分配大量内存。 最大堆(max-heap)确保父节点大于或等于其两个子节点。最小堆(min-heap)要求父节点小于或等于其子节点。Python的heapq模块实现了一个最小堆。堆
2020-08-01 22:06:15
264
原创 【LeetCode】跳水板--Python3实现
跳水板你正在使用一堆木板建造跳水板。有两种类型的木板,其中长度较短的木板长度为shorter,长度较长的木板长度为longer。你必须正好使用k块木板。编写一个方法,生成跳水板所有可能的长度。返回的长度需要从小到大排列。示例:输入:shorter = 1longer = 2k = 3输出: [3,4,5,6]解释:可以使用 3 次 shorter,得到结果 3;使用 2 次 shorter 和 1 次 longer,得到结果 4 。以此类推,得到最终结果。提示:0 < sh
2020-07-20 21:32:23
291
原创 【LeetCode】删除排序数组中的重复项--Python3实现
删除排序数组中的重复项给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度2, 并且原数组nums的前两个元素被修改为1, 2。 你不需要考虑数组中超出新长度后面的元素。示例2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组 nu
2020-07-20 21:01:02
401
原创 【LeetCode】合并两个有序链表--Python3实现
合并两个有序链表将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4题解:# Definition for singly-linked list.class ListNode: def __init__(self, val=0, next=None): self.val = val
2020-07-20 20:59:22
157
原创 MySQL主从复制实现读写分离
MySQL主从复制实现读写分离Ubuntu中已经运行了一个占用3306端口的MySQL,作为主服务器,我们可以使用Docker来新建一个MySQL从服务器!一、准备阶段1、在Ubuntu宿主机中新建一个用于映射从服务器的工作目录(该目录中用于记录从服务器的数据和配置文件)# 进入家目录cd ~# 在家目录中新建文件夹mkdir mysql_slave2、把主MySQL配置文件拷贝一份到mysql_slave文件夹中,作为从服务器的配置文件sudo cp -r /etc/mysql/mys
2020-07-03 21:28:36
98
原创 【LeetCode】有效的括号--Python3实现
有效的括号给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例1:输入: "()"输出: true示例2:输入: "()[]{}"输出: true示例3:输入: "(]"输出: false示例4:输入: "([)]"输出: false示例5:输入: "{[]}"输出: true注意:空字符串可被认为是有效字符串。题解:cl
2020-06-22 15:57:40
183
原创 【LeetCode】最长公共前缀--Pyhon3实现
最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。示例1:输入: ["flower","flow","flight"]输出: "fl"示例2:输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。注意:所有输入只包含小写字母 a-z 。题解:class Solution: def longestCommonPrefix(self, strs: List[str]) -> str
2020-06-22 15:01:31
117
原创 【LeetCode】罗马数字转整数--Pyhon3实现
罗马数字转整数罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V +
2020-06-22 14:30:36
122
原创 【LeetCode】回文数--Python3实现
回文数判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。示例1:输入: 121输出: true示例2:输入: -121输出: false解释: 从左向右读, 为-121。从右向左读,为121-。因此它不是一个回文数。示例3:输入: 10输出: false解释: 从右向左读,为01。因此它不是一个回文数。注意:你能不将整数转为字符串来解决这个问题吗?题解:class Solution: def isPalindrome(se
2020-06-22 12:37:03
202
原创 【LeetCode】整数反转--Python3实现
整数反转给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例1:输入: 123输出: 321示例2:输入: -123输出: -321示例3:输入: 120输出: 21注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。题解:class Solution: def reverse(self, x: int) -> int:
2020-06-22 12:03:00
206
1
原创 【LeetCode】两数之和--Python3实现
两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]题解:class Solution: def twoSum(self, nums: List[int], target: i
2020-06-22 11:41:07
108
原创 Django对象关系映射模式(ORM)中查询集(QuerySet)的缓存特性
如何理解Django查询集的缓存特性查询集概念查询集,也称查询结果集、QuerySet,表示从数据库中获取的对象集合。当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表):all(): 返回所有数据filter(): 返回满足条件的数据exclude(): 返回满足条件之外的数据order_by(): 对结果进行排序对查询集可以再次调用过滤器进行过滤,如:BookInfo.objects.filter(bread__gt=30).order_by('bpup_date'
2020-06-15 20:36:48
376
原创 Django服务端获取请求与响应数据
Django请求与响应服务器获取请求的4种方式P.S. 利用HTTP协议向服务器传参的4种请求:查询字符串请求体URL路径参数请求头1.提取查询字符串request.GETP.S. 在 HttpRequest 对象中,属性 GET 和 POST 得到的都是 django.http.QueryDict 所创建的实例。这是一个 Django 自定义的类似字典的类,用来处理同一个键带多个值的情况,专门用来存储请求中提取的查询字符串参数和请求体参数。2.提取请求体数据表单类型:
2020-05-17 23:29:29
800
原创 Python实践Socket通信原理
TCP通信原理与Socket编程进程之间如何实现网络通信进程通信的概念最初来源于单机系统,由于每个进程都在自己的地址范围内运行,为了保证两个相互通信的进程之间既互不干扰又能协调一致地工作,操作系统为进程通信提供了相应的措施,如:Unix BSD有管道(pipe)、命名管道(named pipe)、软中断信号(signal),Unix system V有消息(message)、共享存储区(s...
2020-04-29 21:17:21
1065
原创 Linux常用文件操作命令
Linux常用命令1.查看文件目录命令说明ls列出当前目录下的显式文件和目录,只能查看一层目录ls -l以详情模式列出当前目录下的显式文件和目录ls -h默认以字节为单位显示出文件和目录的大小,需要和选项l配合使用ls -a列出当前目录下的所有内容,包括以“.”开头的隐藏文件和目录ll以详情模式列出当前目录下的所有文件和目录,包括隐藏文件和...
2020-04-24 23:16:27
1963
基于局域网尬聊的人工智障demo
2020-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人