Python
文章平均质量分 76
BIggyGuan
这个作者很懒,什么都没留下…
展开
-
Python字典顺序存储原理解析
在刷题的时候看到很多时候题目要用到OrderedDict,不是很理解这样做的目的,看到解析说是要按照插入的顺序存储和取出。当时就很疑惑,亲自试验了默认的dict也能够实现顺序存储和取出。Dictionary vs OrderedDict在3.6版本之前,Python Dict底层在初始创建的时候采用的是indice和存储合并在一个二维数组当中。Dictionary采用哈希表原理,key作为取值对象,进行hash(key)操作,得到哈希值,然后用值进行 % 字典容量得到要插入的位置。my_dict['a原创 2021-02-03 11:57:23 · 1145 阅读 · 0 评论 -
基本数据类型
PythonNumber(数字)int(有符号整数)long(长整型)float(浮点型)complex(复数 -5 ~ 257)String(字符串)List(列表)Tuple(元组)Dictionary(字典)JavaByte 1short 2int 4long 8float 4double 8boolean 1char 2原创 2020-11-26 10:27:11 · 103 阅读 · 0 评论 -
Python字典底层讲解
Dictonary字典字典在python中是以键值对(k-v)的形式进行存储。添加,删除,修改,查询的时间复杂度均是O(1)。(1)哈希表(Hashtable)哈希表(也叫散列表),根据关键值对(Key-value)而直接进行访问的数据结构。它通过把key和value映射到表中一个位置来访问记录,这种查询速度非常快,更新也快。而这个映射函数叫做哈希函数,存放值的数组叫做哈希表。 哈希函数的实现方式决定了哈希表的搜索效率。具体操作过程是:数据添加:把key通过哈希函数转换成一个整型数字,然后就将该数字原创 2020-10-24 16:56:59 · 247 阅读 · 0 评论 -
Leetcode 剑指offer 52 两个链表的第一个公共节点
题目输入两个链表,找出它们的第一个公共节点。题解class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: node1, node2 = headA, headB while node1 != node2: node1 = node1.next if node1 else headB原创 2020-08-23 23:32:56 · 124 阅读 · 0 评论 -
二分搜索的三种模板
1 查找target是否在数组中,没有返回-1def binarySearch(nums, target): left, right = 0, len(nums) -1 while left <= right: mid = (left + (right - left)) // 2 if nums[mid] > target: right = mid - 1 elif nums[mid] < targe原创 2020-08-20 16:17:04 · 242 阅读 · 0 评论 -
Python字典比较
判断两个字典是否相同直接使用 == 可对字典类型数据结构进行比较查看两个字典共有的keydict1 = {'a':1,'b':2,'c':3,'d':4}dict2 = {'a':1,'b':2,'c':5,'e':6}dict1 == dict2 # False查看所有差异differ = set(dict1.items()) ^ set(dict2.items())#输出:{('c', 3), ('e', 6), ('c', 5), ('d', 4)}diff_vals = [(原创 2020-08-10 08:11:38 · 3293 阅读 · 0 评论 -
Mysql 索引
索引的用处索引就是为了提高数据查询的效率,就像书的目录一样。让搜索引擎刻印根据目录告诉访问他想去找的地方常见的索引模型哈希表有序数组搜索树哈希表哈希表 :是一种以键 - 值(key-value)存储数据的结构,我们只要输入key就可以相对应的值即为value。哈希的速录很简单,把值放在数组里,用一个哈希函数把key换算成一个确定的位置,然后把value放在数组的这个位置。当有哈希冲突发生的时候,将多个相同的key的value转换成一个链表。如上图中所示,当有新的数据插入时,直接将新值追原创 2020-07-29 12:53:48 · 121 阅读 · 0 评论 -
计算机线程,进程,携程
1、CPU、CPU内核:CPU:是中央处理器的简称,是计算机的运算和控制中心、是信息处理、程序运行的最终执行单元。CPU内核 是CPU内的核心芯片,内核是CPU的计算引擎,由单晶硅制成,用来完成所有的计算、接受/存储命令、处理数据等,是数字处理核心。核心(Die)又称为内核,是CPU最重要的组成部分。2、单核CPU、多核CPU、多CPU:单核CPU:就是系统只有一个CPU,内核只有一个。多核CPU:就是系统只有一个CPU,但是有多个内核,就是在一个处理器内部集成了多个内核。多CPU:就是系统上存转载 2020-07-23 22:27:41 · 278 阅读 · 0 评论 -
Python全局锁GIL,详细解读
什么是GILPython是一门解释型的编程语言, GIL是一把全局的大锁GIL是一把在底层工作的锁,所有的Python解释器的线程模型都逃不过。GIL在Cpython中对多所有的线程编程进行线程安全管理。进程与线程进程与线程:进程相当于一个容器,是操作系统分配资源的单位;线程包含在进程,是操作系统分配时间片的单位多线程编程的问题为了效率,多线程一般会使用异步, 异步的执行流程可能导致结果的不确定Ptyhon中特殊问题,资源管理方式:资源的引用计数,引出了GIL的使用GIL原理G原创 2020-07-20 00:00:08 · 237 阅读 · 0 评论 -
Python self理解
self作为类的初始化init方法中的第一个参数。类的所有实例都有该类的所有方法,因此子类的所有实例都有父类的所有方法。Python类在python中所有的类都直接或者间接继承自Object类,定义了类之后就定义了一个命名空间, 里面定义的属性可以通过类名来引用。新定义的类中有一些Object的属性,可以在其中定义变量或者函数。实例化之后会创建一个对象。class A: passa = A()此处创建了一个类A, 并且进行了实例化,a为类A的实例化对象。A 类和 a中都包含了 如下一些属性转载 2020-07-18 08:57:19 · 184 阅读 · 0 评论 -
Mac配置环境变量填坑
使用pip3安装virtualenv和pipenv后使用指令显示No Command foundMAC系统默认的是python2.7,通过如下指令将python切换为python3.6alias python=/usr/local/bin/python3.6通过pip指令安装Virtualenvpip3 install virtualenv如果提示“command not found: virtualenv”,可通过如下命令解决:sudo cp /Library/Framewor原创 2020-07-16 15:41:44 · 327 阅读 · 0 评论 -
Python 单例
装饰器单例def singleton(cls): instances = []# 为什么这里不直接为None,因为内部函数没法访问外部函数的非容器变量 def getinstance(*args, **kwargs): if not instances: instances.append(cls(*args, **kwargs)) return instances[0] return getinstance @sin原创 2020-07-13 10:11:29 · 102 阅读 · 0 评论 -
Python垃圾回收,搞定面试
Python垃圾回收机制引用计数:Python采用引用计数的方式对对象进行引用管理,源码中Obj_ref变量为被引用次数,当有此对象的引用存在的时候,obj_ref-1, 反之+1,当obj_ref减为0时, 该对象立即被回收,对象占用的内存空间将被释放。引用计数机制所带来的维护引用计数的额外操作与Python运行中所进行的内存分配和释放,引用赋值次数是成正比的,这也是引用计数执行效率比较慢的原因。Python中使用很多内存池来进行不同对象的管理和优化。这里面还会存在循环引用的问题,当若干对象相互引用原创 2020-07-11 09:50:49 · 283 阅读 · 0 评论