学习
文章平均质量分 62
soul booster
再次鼓起丧失的勇气。
展开
-
Python的回溯算法
回溯算法 traceback algorithm原创 2022-12-13 16:57:03 · 765 阅读 · 0 评论 -
python的快速排序
python 快排原创 2022-11-29 17:53:42 · 321 阅读 · 0 评论 -
python的归并排序
python 归并原创 2022-11-29 17:09:06 · 275 阅读 · 0 评论 -
Python二分查找的左闭右闭和左闭右开
python二分查找二分搜索左闭右闭左闭右开区间原创 2022-11-08 17:32:06 · 1611 阅读 · 0 评论 -
python的前缀树(字典树)
python的前缀树字典树原创 2022-11-02 11:32:42 · 910 阅读 · 1 评论 -
pandas有条件的对多列进行赋值
pandas有条件的对多列赋值原创 2022-06-21 17:37:29 · 3296 阅读 · 0 评论 -
Python里怎样改变isinstance和issubclass的行为
读到《Fluent Python》的 Chapter 11 “Interfaces: From Protocols to ABCs”,里面讲到的接口,协议和抽象基类都不难理解,读到 “Virtual Subclass” 虚拟子类有点乱了。举的例子(这几节的例子都太抽象了,读得我难受)大概长这样:后面给的测试结果是这样:我们可以看到由于 TomboList 要继承 list,所以不能做抽象基类 Tombola 的子类,但是为了 issubclass 和 isinstance 的判断处理,做了一个注册原创 2022-02-28 17:59:41 · 253 阅读 · 0 评论 -
由深拷贝浅拷贝想到pandas里的copy
《Fluent Python》第八章里讲到深拷贝和浅拷贝,然后我想到了常用的pandas里的copy:看上去deep是控制深拷贝或者浅拷贝,但是下面这段又解释说deep=True的时候,数据中的Python对象不是递归得拷贝,而是对对象的引用,这和标准库里的深拷贝不同。赋值索引对象这种不可变对象,出于性能原因,拷贝是不需要的,引用就足够安全:我不理解!于是去查相关资料。这个回答讲到说深拷贝在pandas里面不起作用,因为开发者认为在DataFrame中嵌入可变对象是一种反模式。好吧,如果DataF原创 2022-02-10 17:11:28 · 1048 阅读 · 0 评论 -
继承dict还是Collections.UserDict
文章目录文档说了个啥懂哥说了个啥书上说了个啥文档说了个啥文档 好像说了什么但没完全说,特别是这句,对这个类的需求已部分由直接创建 dict 的子类的功能所替代;不过,这个类处理起来更容易,因为底层的字典可以作为属性来访问。 前半句告诉我们这个类用处不大,后半句告诉我们它还有点用但是我对其中的因果关系感到疑惑,底层的字典作为属性为什么会容易处理,dict 里底层的字典不也可以随便拿到吗?总结一下,这块文档编辑者是个谜语人。(谜语人能不能guna~)懂哥说了个啥谷歌输入 how to use coll原创 2021-12-27 17:21:17 · 699 阅读 · 0 评论 -
python circular doubly linked list
python的双向链表需求码番外最近写装饰器看了 functools.lru_cache 的源码1,里面发现了这样的代码: root = [] # root of the circular doubly linked list root[:] = [root, root, None, None] # initialize by pointing to self类似的代码之前在 collections.OrderedDict 的源码里见过,之前也写过原创 2021-12-08 16:59:53 · 175 阅读 · 0 评论 -
装饰器之丐版singledispatch
装饰器之丐版singledispatch前言singledispatch()丐版实现总结前言在公众号上看到《一日一技:使用装饰器简化大量 if…elif…代码》,感觉很有意思跑去看了下源代码1,看到文档写着 Like singledispatch() but dispatches by value of the first arg ,记得 singledispatch() 好像在标准库 functools2里,于是故事开始。singledispatch()英文不好,参考了大佬的文章3知道了singl原创 2021-11-25 17:52:02 · 383 阅读 · 0 评论 -
python3 cookbook 笔记十四
第九章 元编程装饰器装饰器在你写自己的装饰器的时候记得要调用原创 2021-08-17 15:33:49 · 176 阅读 · 0 评论 -
单例模式与WeakValueDictionary
从{}到WeakValueDictionary今天在看关于面试的题,用装饰器实现的时候用的是普通的字典:from functools import wrapsdef single_ton(cls): _instance = {} @wraps(cls) def single(*args, **kwargs): if cls not in _instance: _instance[cls] = cls(*args, **kwargs)原创 2021-08-03 16:06:39 · 680 阅读 · 0 评论 -
python3 cookbook 笔记十三
第八章 类与对象改变对象的字符串显示改变对象的字符串显示__repr__() 方法返回一个实例的代码表示形式,通常用来重新构造这个实例。 内置的 repr() 函数返回这个字符串,跟我们使用交互式解释器显示的值是一样的。 __str__() 方法将实例转换为一个字符串,使用 str() 或 print() 函数会输出这个字符串。__repr__() 生成的文本字符串标准做法是需要让 eval(repr(x)) == x 为真。 如果实在不能这样子做,应该创建一个有用的文本表示,并使用 < 和 &原创 2021-07-21 18:03:12 · 525 阅读 · 0 评论 -
你懂super吗?
类 super 描述器前言super的定义前言你真的懂super吗?首先,super不是指的小象战队的五号位,也不是IG战队的教练,望周知!写这篇文章是因为读到python cookbook的8.7和8.8章,挺懵逼也挺丢人的,所以这次就把它弄个明明白白咯。super的定义敲下 help(super) ,你会得到:Help on class super in module builtins:class super(object) | super() -> same as sup原创 2021-07-14 17:52:06 · 214 阅读 · 0 评论 -
百分之99的人都不知道关于pandas的stack的冷知识
先上stack的定义https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.stack.html def stack(self, level=-1, dropna=True): """ Stack the prescribed level(s) from columns to index. Return a reshaped DataFrame or原创 2021-06-24 18:21:58 · 431 阅读 · 0 评论 -
pandas里关于groupby的一些冷知识
持续更新列名列名对 agg 传递的函数或者函数名的列表,你会获得一个列名是这些函数名的 DataFrame :tips = pd.read_csv('examples/tips.csv')grouped = tips.groupby(['day', 'smoker'])grouped_pct = grouped['tip_pct']grouped_pct.agg(['mean', 'std', peak_to_peak])但是一个经常碰到的场景是我们传递了一个匿名函数,结果会变成这样:原创 2021-06-07 18:04:52 · 122 阅读 · 0 评论 -
pandas里的pivot和pivot_table是啥关系
pandas里的pivot和pivot_table是啥关系pivotpivot_table总结参考pivot首先函数定义如下:DataFrame.pivot(index=None, columns=None, values=None)Return reshaped DataFrame organized by given index / column values.Reshape data (produce a “pivot” table) based on column values. Use原创 2021-06-01 18:06:32 · 586 阅读 · 0 评论 -
Python里的描述器 Descriptor
Python里的描述器descriptor起因学!什么是描述器描述器的四个方法__set_name____set____get__补充属性的访问Property的实现应用起因在公众号里读到了这篇文章《这个 Python 知识点,90% 的人都得挂~》,一直读到第三点 基于描述符如何实现property 的时候懵了,于是去翻文档重新学习。(公众号的文章里叫描述符,翻译的文档叫描述器,以下统一称Descriptor为描述器)学!什么是描述器descriptor 就是任何一个定义了 __get__(),原创 2021-05-28 17:48:36 · 309 阅读 · 0 评论 -
关于Python字典的键的一些研究
关于Python字典的键的一些研究前言搬运疑惑研究其他思考前言今天10月28日,RNG2:0二刷4AM战队,杀象杀象!!起因是摸鱼的时候看了这篇文章,一些有趣且鲜为人知的 Python 特性,觉得很神奇就深入研究了下关于Python字典的 key 。搬运可能有人跟我一样懒得点链接,那我就搬过来好了。class SomeClass(str): passsome_dict = {'s':42}Output:>>> type(list(some_dict.keys(原创 2020-10-28 18:39:53 · 214 阅读 · 0 评论 -
从pandas_exercises里学到的
孤寡前言读数据计算占比div函数前言github上找的练习pandas的一个项目,记录下学到了啥。项目https://github.com/guipsamora/pandas_exercises下载到本地用Jupyter notebook打开就好啦。读数据众所周知,读取数据直接用pandas.read_(table,csv,sql,excel)就好,需要注意的是read_table和read_csv里默认的参数sep并不同,前者是\t,而后者是, 。计算占比计算占比时总会agg两个函数原创 2020-08-25 17:43:59 · 483 阅读 · 0 评论 -
Python的导入系统
昨天dodo三连胜!导入系统importlib包常规包命名空间包搜索模块缓存查找器和加载器导入钩子元路径加载包的相对导入导入系统一个 module 内的 Python 代码通过 importing 操作就能够访问另一个模块内的代码。 import 语句是发起调用导入机制的最常用方式,但不是唯一的方式。 importlib.import_module() 以及内置的 __import__() 等函数也可以被用来发起调用导入机制。import 语句结合了两个操作;它先搜索指定名称的模块,然后将搜索结果绑定原创 2020-07-31 17:24:06 · 422 阅读 · 0 评论 -
关于Open函数的newline参数
酬勤酬勤前言初探破案前言工作的时候发现下面这段代码:with open(outfile2, 'a+') as f: df.to_csv(f, sep='=', index_label=False, header=False)然后我检查文件发现每两行数据间会有多余的空行,咋回事呢?初探去找了 pandas 里 pandas.DataFrame.to_csv 的文档,发现这样一句话:If a file object is passed it should be opened with new原创 2020-07-28 18:14:40 · 9687 阅读 · 1 评论 -
听说是Python 可视化神器:Plotly Express
恭喜Running Man10周年,Keep Running!起因安装pip命令相关链接上手散点图折线图条形图散点矩阵平行坐标图to add起因早上逛公众号看到有个库plotly做可视化很厉害,早上闲来无事就研究下,后面发现还要注册账号,直接劝退,结果被我找到他的一个高级封装库叫plotly_express,也有神器的名号,那就这个吧~安装pip命令pip install plotly_express相关链接两篇博文https://www.jianshu.com/p/44416202a原创 2020-07-13 17:40:53 · 1305 阅读 · 0 评论 -
Python条件控制易错点
前言最近在看Python的文档,发现以前没注意的知识点会记录成随笔。正文https://docs.python.org/zh-cn/3/tutorial/datastructures.html#more-on-conditions比较操作可以传递。例如 a < b == c 会校验是否 a 小于 b 并且 b 等于 c,而不是从左到右的运算。示例代码:>>> 2<1==FalseFalse...原创 2020-07-03 11:27:08 · 101 阅读 · 0 评论 -
python3 cookbook 笔记十二
第七章函数前言给函数参数增加元信息关于元组定义有默认参数的函数匿名函数捕获变量值将单方法的类转换为函数带额外状态信息的回调函数内联回调函数访问闭包中定义的变量前言第六章数据编码和处理好像不怎么用的到,以后遇到问题了再研究下吧,男人的承诺。其实第七章函数也没啥可讲的,把我以前没注意到的点记录下吧,其他简单的部分就忽略掉了哦。给函数参数增加元信息使用函数参数注解是一个很好的办法,它能提示程序员应该怎样正确使用这个函数。 例如,下面有一个被注解了的函数:def add(x:int, y:int) -&g原创 2020-06-02 17:56:45 · 120 阅读 · 0 评论 -
python3 cookbook 笔记十一
第五章 文件与IO读写文本数据打印输出至文件中使用其他分隔符或行终止符打印读写字节数据文件不存在才能写入读写压缩文件固定大小记录的文件迭代获取文件夹中的文件列表读写文本数据注意两种模式test mode(t)和binary mode(b),和四种常用的操作读(r)写(w)新建文件再写入(x)追加写入(a),组合起来就类似rt 和 wb这样,不过默认是text mode所以一般可以省略掉 t。第二点就是最好使用with语句控制上下文,比较美观而且不用手动关闭文件,比较pythonic:with ope原创 2020-06-01 17:13:41 · 126 阅读 · 0 评论 -
python3 cookbook 笔记十
python3 cookbook 第三章前言手动遍历迭代器代理迭代使用生成器创建新的迭代模式实现迭代器协议反向迭代带有外部状态的生成器函数迭代器切片跳过可迭代对象的开始部分排列组合的迭代序列上索引值迭代同时迭代多个序列不同集合上元素的迭代创建数据处理管道展开嵌套的序列顺序迭代合并后的排序迭代对象迭代器代替while无限循环前言这章节讲的是迭代器和生成器,学习之前可以看一下这个回答,先复习下可迭代对象,迭代器和生成器的相关知识。手动遍历迭代器这一小节的问题是,你想遍历一个可迭代对象中的所有元素,但是却原创 2020-05-29 15:59:05 · 369 阅读 · 0 评论 -
python3 cookbook 笔记九
python3 cookbook 第三章前言数字的四舍五入执行精确的浮点数运算数字的格式化输出二八十六进制整数字节到大整数的打包与解包复数的数学运算无穷大与NaN分数运算大型数组运算矩阵与线性代数运算随机选择基本的日期与时间转换计算上一个周五的日期计算当前月份的日期范围字符串转换为日期结合时区的日期操作写在后面前言第三章讲的是数字日期和时间,在地铁上看得七七八八了,我想跟上一章一样,快速过一遍得了,感觉没啥好讲的。数字的四舍五入老生常谈的一个问题,感觉 cookbook 上的解释也有点模糊,我推荐直原创 2020-05-14 18:07:30 · 274 阅读 · 0 评论 -
Python里的 type() 和 type.__new__()
写在前面在联系元类的时候产生了这个疑惑,在__new__里面返回值为什么要用type.__new__()而不是type(),我尝试着替换成后者,代码会起到意想不到的结果,甚至是无限递归导致报错。于是我去查下,在SO上找到了答案。class ModelMetaclass(type): def __new__(cls, name, bases, attrs): if name=='Model': return type.__new__(cls, name,原创 2020-05-09 17:49:47 · 2031 阅读 · 0 评论 -
Python 的 type 和 object 之间是怎么一种关系?
解释的非常好,学习元类的同学可以看一下。链接原创 2020-05-08 17:32:57 · 82 阅读 · 0 评论 -
python3 cookbook 笔记八
python3 cookbook 第二章写在前面re模块re.splitre.matchre.findallre.sub字符串开头结尾匹配将Unicode文本标准化字符串对齐合并拼接字符串字符串中插入变量以指定列宽格式化字符串字符串令牌解析实现一个简单的递归下降分析器写在前面终于有空继续cookbook的第二章了,这一章讲的是字符串和文本的处理,看了前面几小节发现用的方法大同小异,于是准备这一...原创 2020-05-08 16:16:42 · 153 阅读 · 0 评论 -
关于Python函数传参是传值还是传引用
写在前面事情的起因要从昨天说起,昨天写了个函数,对传入的 df做一些计算,大概长这样:def summary2_cal1(df): df1 = df.groupby([...]).agg({...}) df['CTAU'] = ' ' df2 = df.groupby([...]).agg({...}) df_part1 = pd.concat([df1, df2],sort=Fals...原创 2020-04-29 15:25:39 · 192 阅读 · 0 评论 -
python3 cookbook 笔记七
python cookbook3第一章转换并同时计算数据合并多个字典或映射终于到了第一章的最后两节了,今天一定能解决它!转换并同时计算数据如果你要对一个数据序列执行聚合函数(例如sum(),max()),同时得先对数据转化或者过滤。一个非常优雅的方式去结合数据计算与转换就是使用一个生成器表达式参数。 比如,如果你想计算平方和,可以像下面这样做:nums = [1, 2, 3, 4, 5]...原创 2020-04-27 15:03:42 · 177 阅读 · 0 评论 -
python cookbook3笔记六
python cookbook3第一章映射名称到序列元素namedtuple源码最近忙得要吐了,各种新项目的,终于是有时间写博客了,一口气把第一章过掉吧!映射名称到序列元素你有一段通过下标访问列表或者元组中元素的代码,但是这样有时候会使得你的代码难以阅读, 于是你想通过名称来访问元素。collections.namedtuple() 函数通过使用一个普通的元组对象来帮你解决这个问题。 这个...原创 2020-04-23 18:34:04 · 184 阅读 · 0 评论 -
python cookbook3笔记五
python cookbook3第一章序列中出现次数最多的元素序列中出现次数最多的元素原创 2020-04-20 16:24:12 · 170 阅读 · 0 评论 -
再谈OrderedDict源码
前言之前写过的一篇文章里面有提到collections模块里面OrderedDict的相关源码,今天再看这个模块里面其他部分的时候突然发现之前看的源码是过时的,我也是惊呆了,不过也怪我自己没有去github上面找。在这里新写一篇文章,也是记录下两个源码之间的不用吧。源码地址:https://github.com/python/cpython/blob/3.8/Lib/collection...原创 2020-04-09 16:06:02 · 390 阅读 · 0 评论