随笔分类 - Python
摘要:一、 全局解释器锁(GIL) 1. 什么是全局解释器锁 在同一个进程中只要有一个线程获取了全局解释器(cpu)的使用权限,那么其他的线程就必须等待该线程的全局解释器(cpu)使用权消失后才能使用全局解释器(cpu),即时多个线程直接不会相互影响在同一个进程下也只有一个线程使用cpu,这样的机制称为全
阅读全文
摘要:1. 上下文管理器 在使用Python编程中,可以会经常碰到这种情况:有一个特殊的语句块,在执行这个语句块之前需要先执行一些准备动作;当语句块执行完成后,需要继续执行一些收尾动作。 例如:当需要操作文件或数据库的时候,首先需要获取文件句柄或者数据库连接对象,当执行完相应的操作后,需要执行释放文件句柄
阅读全文
摘要:Garbage collection(GC) Garbage collection(GC) python里也同java一样采用了垃圾收集机制,不过不一样的是: python采用的是引用计数机制为主,标记-清除和分代收集两种机制为辅的策略。 1. 引用计数机制 原理:当一个对象的引用被创建或者复制时,
阅读全文
摘要:1. 异常种类 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 常见异常处理: 其他异常: 2. 异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常)。程序员编写特定的代码,专门用来
阅读全文
摘要:zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。 例子: 结果为:[(1, 4), (2, 5), (3, 6)] 结果为:{1:
阅读全文
摘要:chr()接收一个数字, 找到这个数字对应的ascii里的元素(只能接受数字) ord()接收一个字符,返回这个字符对应的数字.(只能接受一个字符) 举例:实现字符串的反转,要求不使用任何系统方法,且时间复杂度最小 思路:异或时间复杂度O(N)不需要中间变量 代码如下: 结果:cba
阅读全文
摘要:一、进制转换 编程用十进制,十进制转换为二进制、八进制、十六进制 也可以直接反向获取十进制 也可以用int函数来转换 二、位运算 按位异或的3个特点:(1) 0^0=0,0^1=1 0异或任何数=任何数(2) 1^0=1,1^1=0 1异或任何数-任何数取反(3) 任何数异或自己=把自己置0 按位异
阅读全文
摘要:u/U:表示unicode字符串 不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicode编码。 一般英文字符在使用各种编码下, 基本都可以正常解析, 所以一般不带u;但是中文, 必须表明所需编码, 否则一旦编码转换就会出现乱码。 建议所有编码方式采用utf8 r/R:非转义的原
阅读全文
摘要:1.常规警告 import warnings warnings.filterwarnings("ignore") 2.安装gensim,在python中导入的时候出现一个警告: warnings.warn("detected Windows; aliasing chunkize to chunkiz
阅读全文
摘要:1.利用min(dict, key=dict.get) 2.利用lambda函数
阅读全文
摘要:【问题描述】 在将dict转为DataFrame时会报错:If using all scalar values, you must pass an index 例如: 【解决办法】 添加参数:index = [0]
阅读全文
摘要:1. glob.glob() glob模块是Python最简单的模块之一, 内容非常少, 用它可以查找符合特定规则的文件路径名, 查找文件时只会用到三个匹配符: * :匹配0个或多个字符 ? : 匹配单个字符 [] : 匹配指定范围内的字符, 如[0-9]匹配数字 返回的是列表 list类型,是所有
阅读全文
摘要:问题描述:假设我有这样两个list, 一个是list1,list1 = [1, 2, 3, 4, 5] 一个是list2,list2 = [1, 4, 5] 我们如何得到一个新的list,list3, list3中包括所有不在list2中出现的list1中的元素。 即:list3 = list1 -
阅读全文
摘要:大量元素情况 可以采用set_printoptions(threshold='nan') set_printoptions(threshold='nan')
阅读全文
摘要:目的: 想生成一个[[],[],[]] 这样的列表, 所以就 [[]]*3 这样做了,但是这样做会有问题,这样list中的三个list其实是同一个list。 例如:a=[[]]*3,然后a[0].append(1), 然后a就变成这样了:[[1],[1],[1]] 验证一下,发现表达式 a[0] i
阅读全文
摘要:Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数。 count()、cycle()、repeat() 首先,我们看看itertools提供的几个“无限”迭代器: 因为count()会创建一个无限的迭代器,所以上述代码会打印出自然数序列,根本停不下来,只能按Ctrl+C退
阅读全文
摘要:collections是Python内建的一个集合模块,提供了许多有用的集合类。 1. namedtuple 我们知道tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: >>> p = (1, 2) 但是,看到(1, 2),很难看出这个tuple是用来表示一个坐标的。 定义一个clas
阅读全文
摘要:查找效率:set>dict>list 单次查询中: set做了去重,本质应该一颗红黑树 (猜测,STL就是红黑树),复杂度 O(logn); dict类似对key进行了hash,然后再对hash生成一个红黑树进行查找, 其查找复杂其实是O(logn),并不是所谓的O(1)。 O(1)只是理想的实现,
阅读全文
摘要:eval()函数十分强大,官方demo解释为:将字符串str当成有效的表达式来求值并返回计算结果。 so,结合math当成一个计算器很好用。 其他用法,可以把list,tuple,dict和string相互转化。 见下例子: 不可谓不强大! BUT!强大的函数有代价。安全性是其最大的缺点。 想一想这
阅读全文
摘要:现将list a与 list b按位相加,其结果为[5,7,9] 方法一: 方法二: 方法三: 调用numpy库 map()函数: map()函数接受两个参数,一个是函数,一个是序列,map将传入的函数作用到序列的每个元素,并返回一个可以列表化的map对象。(python2直接返回列表) zip()
阅读全文