
Python
记录Python相关技术点
Sw0rd98
不积跬步无以至千里,不积小流无以成江海
展开
-
【重磅】Python后端开发秋招笔试面试必备知识记录(持续更新中)
用HashMap的方式记录自己的技术栈,涵盖数据结构、算法、计算机网络、操作系统、数据库、Python语言特性、Linux、项目框架以及高级扩展知识和个人使用工具等Github资源地址:https://github.com/honorwh/BD-Notes【补充】有兴趣的留言或者向我申请笔记访问权限待秋招结束再将所有复习笔记从印象笔记抽取整理出来!希望对大家有所帮助,一起加油!...原创 2019-09-02 19:33:35 · 492 阅读 · 1 评论 -
数据结构与算法 单链表实现
#单链表实现(链表) #要学的重点才从这里刚刚开始class Node(object): def __init__(self, value = None, next = None): self.value, self.next = value, nextclass LinkedList(object): def __init__(self, maxsi...原创 2019-05-06 16:45:36 · 347 阅读 · 0 评论 -
python单例模式学习
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。__new__()在__init__()之前被调用,用于生成实例对象。利用这个方法和类的属性的特点可以实现设计模式的单例模式。单例模式是指...原创 2019-05-06 15:08:15 · 249 阅读 · 0 评论 -
给自己好好上一课 数据结构与算法课 数组实现
其实相比列表,python内置的数组使用的极少,要用array的话,同样推荐Numpy的array,那个用于处理数据,做简单数据分析的函数,就特别好用。但本篇还是自己手动建立一个类来实现数组操作(毕竟平时都是直接用的api,没手动过)#数组和列表#python内置的array用的特别少,列表用的特别多class Array(object): def __init__(self, ...原创 2019-04-22 22:58:32 · 135 阅读 · 0 评论 -
给自己好好上一课 数据结构与算法课 抽象数据类型和面向对象编程
#给自己好好上一课 数据结构与算法课#抽象数据类型和面向对象编程#代码实现Bag类class Bag(object): def __init__(self, maxsize = 10): #给出最大容量 self.maxsize = maxsize self._items = list() #容器类型使用列表 def add...原创 2019-04-22 22:39:38 · 185 阅读 · 0 评论 -
python装饰器的学习
我决定分为三个方面来认识和学习装饰器:1.什么是装饰器?2.装饰器的工作过程及如何使用装饰器?3.装饰器有什么用?我可以用装饰器做什么?首先,我们要从函数开始说起。函数是对象,因此,具有功能:1.可以分配给变量2.可以在另一个函数中定义这意味着一个函数可以是return另一个函数。举个栗子:def getTalk(kind="shout"): de...原创 2019-04-18 16:58:52 · 142 阅读 · 0 评论 -
python生成器和迭代器的学习
本篇也是参考学习了某博主的博文,获益匪浅,此博主的技术栈和我目前走的路线应该是最接近的,有空好好学习下。看完博主的python全栈学习之路感觉跟半年前的我经历神似!这篇好好读完对于python的理解绝对能提升一个等级,耐心敲代码,不要只是看的懂就ok,看得懂并没完事,写代码远没这么简单,这是我最近最大的感慨!在刷leetcode的时候,我觉得就是,只有日积月累不断地练习,用到的东西绝对比单...原创 2019-04-15 16:56:58 · 231 阅读 · 0 评论 -
python面试题刷题笔记11-20
11.AOP和装饰器(可参考stackoverflow或者个人博客)装饰器的作用就是为已经存在的对象添加额外的功能。https://blog.youkuaiyun.com/honorwh/article/details/8938158712.鸭子类型:简单来说,就是不管对象是什么类型,而只关心对象的行为。鸭子类型在动态语言中经常使用,非常灵活,使得python不想java那样专门去弄一大堆...原创 2019-05-08 01:04:24 · 291 阅读 · 0 评论 -
python面试题刷题笔记1 - 10
1.python的函数参数传递:id()查看引用变量的内存地址对象分为可更改对象和不可更改对象,python中,strings, tuples, numbers属于不可更改的对象,list, dict, set等是可更改对象当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系了.所以第一个例子里(a = 1)函数把引用指向了一个不可变对象,当函数返...原创 2019-04-15 15:32:49 · 1185 阅读 · 0 评论 -
常用模块和方法记录--heapq模块
heapq模块:heapq 模块提供了堆算法。heapq是一种子节点和父节点排序的树形数据结构heapq.heapify(ls):heapq模块实现了一个适用于Python列表的最小根堆排序算法。heapq.heappop(ls):按从右往左pop出去(即去掉的是根节点的数)heapq.heappush(ls, item):既是小根堆了,那么插入数据,子节点就必定比父节点要...原创 2019-04-04 14:59:58 · 167 阅读 · 0 评论 -
常用模块和方法记录--collections模块
虽说官方文档都有,但这条是记录下我的常用,可以见证我一路走下去碰过的多少模块,以及常用的模块方法。1.collections模块collections.namedtuple('名称', 属性[])例如:collections.namedtuple('Circle', ['x', 'y', 'r'])collections.deque([]):deque()的参数可以是一个...原创 2019-04-04 14:47:05 · 138 阅读 · 0 评论 -
python面试大题收录
1-10题1.请简要介绍python的生成器是什么python生成器是一个返回可以迭代对象的函数,可以被用作控制循环的迭代行为。生成器类似于返回值为数组的一个函数,这个函数可以接受参数,可以被调用,一般的函数会返回包括所有数值的数组,生成器一次只能返回一个值,这样消耗的内存将会大大减小。<generator >生成器是能够动态提供数据的可迭代对象,程序执行时,才能获得数...原创 2019-05-07 01:39:42 · 310 阅读 · 0 评论 -
python刷题笔记 --2019.3.13
2019.3.13python数据抓取工作中对http的知识点:http状态码100:继续客户端当继续发送请求102:继续处理201:表示服务器在请求的响应中建立了新文档,应在定位头信息中给出他的url202:请求被接受,但处理未完成函数是对代码和功能的封装,本质上是人们为了提升编程效率的一种抽象,与计算机执行及速度无关python3中的数据类型分为可变与...原创 2019-03-14 20:46:42 · 1398 阅读 · 0 评论 -
python刷题笔记 --2019.3.12
2019.3.12^不出现在中括号里面,则表示匹配开始字符^出现在中括号里面,则表示匹配除中括号中出现的所有字符堆排序本质是完全二叉树,最小元素位于根部排序算法中,初始数据集的排列顺序对算法性能无影响的是堆排序正则表达式的特殊字符 匹配字母,数字,字符串的是\ w正则非贪婪模式使用 \? 设置python中的heapq 是一种 树型数据结构...原创 2019-03-12 19:24:30 · 191 阅读 · 0 评论 -
python刷题笔记 --2019.3.11
2019.3.11float("inf")和flaot("-inf")叫做正负无穷~for可以测试一个对象是否是可迭代对象表达式判断为True的是()A.5 + 4j > 2 - 3jB.3 > 2 > 2C.(1,2) < ('a','b')D."abc" < "xyz"选D,解析是这样:A复数之间无法比较,B是两原创 2019-03-12 19:05:49 · 263 阅读 · 0 评论 -
Python列表、元组、集合、字典的操作及时间复杂度的比较
列表 元组 字典 集合 是否可变 可变 不可变 可变 可变 是否有序 有序 有序 无序 ...原创 2020-03-01 16:13:44 · 3812 阅读 · 1 评论 -
图片化加手动推导深刻记忆插入排序全过程
插入排序与选择排序有类似但却不同!选择排序是选择出每次的min;插入排序是每次有一个值必须插入已排好序的数组。时间复杂度:最好是O(n),最坏和平均是O(n2)空间复杂度:O(1)#!/usr/bin/env python3# -*- coding: utf-8 -*-"""Created on Wed Jul 17 03:43:14 2019@author: honorw...原创 2019-07-17 05:12:56 · 186 阅读 · 0 评论 -
图片化加手动推导深刻记忆冒泡排序全过程
冒泡排序是把最(大/小)值数往后一直"浮动",直到序列全部浮动完成。时间复杂度:最好情况是O(n),最坏情况和平均情况是O(n2)空间复杂度:O(1)#!/usr/bin/env python3# -*- coding: utf-8 -*-"""Created on Wed Jul 17 05:14:32 2019@author: honorwh"""#冒泡排序def...原创 2019-07-17 15:05:29 · 176 阅读 · 0 评论 -
图片化加手动推导深刻记忆快速排序全过程
快速排序可能是这几种常用算法中最难的,它与归并排序虽然都是使用分而治之的策略,但实质上相差很大。快速排序和归并排序的区别和联系大致在:快速排序和归并排序的原理都是基于分治思想,即首先把待排序的元素分为两组,然后分别对这两组排序,最后把两组结果合并起来,这是他们的相同点;不同点在于,进行的分组策略不同,后面的合并策略也不同。归并排序的分组策略是假设待排序的元素存放在数组中,那么把数组前面一半...原创 2019-07-18 03:35:45 · 237 阅读 · 0 评论 -
二叉树的前序、中序、后序、层序遍历的Python实现(代码+部分注释)
二叉树的前中后序遍历可以用递归和迭代两种方式实现,层序遍历使用BFS(广度优先搜索)实现。下面直接手写代码,使用的是Python3.首先是前序遍历:两种方法#按照Leetcode的格式来写class TreeNode: def __init__(self, x): self.val = x self.left = None s...原创 2019-08-03 12:10:08 · 1726 阅读 · 2 评论 -
python web页面元素提取案例
内容:提取国家地理中文网的图片链接(网站源码保存为HTML文档)本案例可以分成以下步骤:1.读取保存在本地的HTML文档2.解析并提取其中的图片链接3.输出提取结果到屏幕4.保存提取结果为文件采用自顶而下的的设计思路。以下是国家地理中文网的网页源码一角def getHTMLlines(htmlpath): f=open(htmlpath,"r",encodin...原创 2018-09-02 20:39:21 · 5633 阅读 · 2 评论 -
图片化加手动推导深刻记忆选择排序全过程
选择排序可能没归并和快排那么热门,但也是常见的排序算法之一。时间复杂度:最好、最坏、平均都是O(n2)空间复杂度:O(1)#!/usr/bin/env python3# -*- coding: utf-8 -*-"""Created on Wed Jul 17 02:53:31 2019@author: honorwh"""def SelectSort(A): ...原创 2019-07-17 03:40:48 · 187 阅读 · 0 评论 -
图片化加手动推导深刻记忆希尔排序全过程
希尔排序原理:首先将待排序的元素分成多个子序列,使得每个子序列的元素个数相对较少,对各个子序列分别进行直接插入排序,最后在基本有序后最后做一次直接插入排序。时间复杂度:O(nlogn) 最坏是O(n ** s)(1<s<2) 不稳定的排序方法;空间复杂度:O(1)#!/usr/bin/env python3# -*- coding: utf-8 -*-"""Crea...原创 2019-07-18 23:30:11 · 234 阅读 · 0 评论 -
用python类做一个学生信息管理系统(功能还能等后续再更新)
项目要求:设计一个学生类Student,包含一个name,sex,age,然后设计一个StudentList来管理一组学生记录程序功能要求:1.程序运行后显示“>”的提示符号2.在“>”后面可以输入show,insert,update,delete等命令实现记录的显示,插入,修改,删除等功能3.执行一个命令后继续显示“>”提示符号4.如果输入exit就退出...原创 2019-03-11 00:10:23 · 588 阅读 · 0 评论 -
python类的基础学习笔记
python面向对象程序设计(来自个人的印象笔记)---------------------------类是把具有相同特性(数据)和行为(函数)的对象抽象为类了解几个术语:类,类对象,实例对象,属性,函数,方法------------------------------------------------------------------定义类:class Per...原创 2019-03-10 15:37:22 · 172 阅读 · 0 评论 -
python核心基础笔记(自总结,根据个人看书思路来写,收藏起来没事看看)
(采用印象笔记记录)有空稍微总结下,根据红书和网课。按照自己思路来做,大部分算查漏补缺Python计算生态 = 标准库 +第三方库开篇turtle画图工具turtle.setup(width,height,startx,starty)Setup不是必备项turtle.penup() 别名turtle.pu()画笔起飞turtle.p...原创 2019-03-10 01:29:31 · 438 阅读 · 0 评论 -
python趣味百题之10题 (包含做题时的想法笔记和代码)
1.尾数前移#coding:utf-8#python趣味百题1#1.尾数前移:一个数的末位移到首位,等于原来的数的4倍#1234->4123,1234*4=?4123#求一个自然数N,个位数是6,将6提到最前面所得数是N的4倍?#求一个自然数N,个位数是8,将8提到最前面所得数是N的4倍?def fun(n): nn = n t = 6...原创 2019-02-28 22:08:44 · 639 阅读 · 0 评论 -
python随机密码生成
包括了大小写字母和数字的密码的随机产生。在这过程有几个点:一个是怎样导入大小写字母和数字,首先是引进string库和random库(产生随机数的库),string库有以下几个字符串的引用:通过string.ascii_letters+string.ascii_digits就可以引进大小写字母和数字了。然后是用到的random库的sample(),可以返回随机k个元素 。i...原创 2018-08-18 17:55:07 · 44427 阅读 · 4 评论 -
python羊车门问题的正确解答
羊车门问题羊车门问题描述:有3扇关闭的门,一扇门后停着汽车,另外两扇门后是山羊,主持人知道每扇门后是什么。参赛者首先选择一扇门。在开启它之前,主持人会从另外两扇门中打开一扇门,露出门后的山羊。此时,允许参赛者更换自己的选择。请问,参赛者更换选择后,能否增加猜中汽车的机会?通过设计并编写程序验证,并给出自己的解释。答案要求以如下方式给出。(The sheep door has 3 closed ...原创 2018-08-18 16:18:41 · 47648 阅读 · 18 评论 -
python词频统计编程出现的问题(部分内容经转载)
使用Python写文件的时候,或者将网络数据流写入到本地文件的时候,大部分情况下会遇到:UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position ... 这个问题。 网络上有很多类似的文件讲述如何解决这个问题,但是无非就是encode,decode相关的,这是导致该问题出现的真正原因吗?不是的。 很多时候,我...原创 2018-08-18 15:44:12 · 1709 阅读 · 0 评论 -
今日份python之简易计算器的python实现 -2019.3.19
基本功能:加减乘除每进行一次运算立刻打印相应结果,与手机上的计算器功能相同(除了没有高阶函数加入之外),所以计算不了例如正余弦函数的式子。其他都ok。“q”:退出def main(): while True: sign1 = input() if "+" in sign1: if sign1[0] != "+": ...原创 2019-03-19 18:39:24 · 220 阅读 · 1 评论 -
常见的多种排序算法的具体掌握和python实现
分别有冒泡排序,选择排序,插入排序(前三个属于简单排序,平方阶排序)快速排序,归并排序以及堆排序(线性对数阶排序)还有希尔排序,基数排序,计数排序,桶排序1.冒泡排序冒泡排序步骤:比较相邻的元素,如果第一个比第二个大,就交换他门两个->对第0个到第n-1个的数据做同样的动作,这时,最大的数就在最后的位置上->针对所有的元素重复以上步骤,除了最后一个->...原创 2019-03-17 23:20:17 · 202 阅读 · 0 评论 -
爬取王者荣耀官网英雄皮肤高清壁纸(简易方法)
代码加详细注释。import requests#import osurl = "https://pvp.qq.com/web201605/js/herolist.json" #想要爬取的网址'''请求头:User-Agent:简称UA,它是一个特殊的字符串头,可以使服务器识别客户使用的操作系统及版本在做爬虫时加上此信息,可以伪装成浏览器,如果不加很可能会被识别出为爬虫,这个一...原创 2019-03-25 00:35:48 · 3227 阅读 · 0 评论 -
利用Spyder的GDB调试器单步调试加手动推导学习归并排序
好久不见!由于做比赛项目和期末考试搁置了一个多月没更新博客...今天先补一篇归并排序的灵魂推导!(下面会以调试器的截图一步步看归并排序的变量的变化过程)首先,归并排序使用分而治之的策略,即把序列不停地二分,直到最小单元,再不停地合并,同时进行排序,通过函数递归最终实现分而治之的结果。代码如下:#!/usr/bin/env python3# -*- coding: utf-8 -...原创 2019-07-16 17:57:20 · 272 阅读 · 0 评论 -
python旧式类和新式类
python2有经典类和新式类并存,具体写法分为:class A(object):新式类class A():旧式类class A:旧式类python3默认是新式类有无object是判断旧式类和新式类的最大区别,新式类继承了object类。新式类的MRO(method resolution order基类搜索顺序)算法采用C3算法广度优先搜索,而旧式类的MRO算法是采...原创 2019-05-05 14:08:48 · 593 阅读 · 0 评论 -
《算法图解》看完后的部分笔记
这本书真的浅显易懂,看完之后会对一些算法的理解更好一点。好了,以下是我的一些笔记,内容大概是全书框架加一些手写的感想以及手写的代码(其中我觉得这本书讲的最好最浅显易懂的就是选择排序和快速排序了),算法推导的话,后面的广度优先搜索,狄克斯特拉算法,贪婪算法,动态规划以及K近邻这些很重要的算法也都是十分好理解。第一章二分法查找初学时间复杂度的判断:(常见的复杂度)O(1)O(l...原创 2019-04-05 16:50:04 · 777 阅读 · 0 评论 -
python模式匹配和正则表达式
正则难题;特殊字符:.^$?+*{}|(): 这些字符想用字面值,必须使用转义字符进行转义\|是管道符号,表示或的意思,如果A|B同时出现,只匹配第一次出现的字符例如:\. \? \* \( \) 等等\d \s \w 第一个表示0-9的任何数字; 第二个表示空格,制表符,换行符; 第三个表示数字,字母和下划线\D \S \W 上面每一个的“非”即是...原创 2019-03-26 22:18:19 · 263 阅读 · 0 评论 -
python常见问题:浅拷贝和深拷贝
要从列表的引用说起当把列表赋值给一个变量时,实际上是把列表的引用赋给了变量,引用是一个值,指向某些数据。列表变量本身并没有包含列表,而是包含了列表的“引用”(这些引用包含一些ID数字,python在内部使用这些ID,但我们可以忽略)而python有个copy模块,有个copy.copy()和copy.deepcopy()两个方法;其中,copy.copy()便可以复制列表或者...原创 2019-03-26 15:52:35 · 118 阅读 · 0 评论 -
python好玩的自制项目-美桌网的王者荣耀最新英雄皮肤高清壁纸的爬取
与上一篇相比,本项目相对比爬表情包相对难一点。上一个爬取项目是直接解析网页源码即可找到表情包的超链接,而本项目需要通过两层解析,才能找到分辨率为(1920*1080)的高清壁纸。为何如此?因为第一层解析得到的data_original(也就是图片地址)其实不是高清图,都是低画质图片还有一些.png的标题图,而真正想要获得高清壁纸的话,要进行再次解析。也就是把第一层解析出来的数据做数据分析,找出提取...原创 2019-03-19 13:05:22 · 1040 阅读 · 0 评论 -
90分钟的python爬虫一课复习
学习内容:完成爬取斗图啦表情包,涉及1.爬虫基础知识所用到的第三库有requests,bs4(BeautifulSoup),os,threading都是做爬虫基本的第三方库爬虫最主要由几个模块组成:第一部分:请求数据第二部分:获取数据(获取链接并进行解析)第三部分:保存数据到本地一般简单的爬虫就由这几部分组成更高级的爬虫程序,则必须考虑网站的防守(反爬)措施,...原创 2019-03-19 13:00:52 · 550 阅读 · 0 评论