- 博客(16)
- 收藏
- 关注
原创 Python 实现自定义类和实例进行比较和排序!自定义类比较方法全讲解
eq大白话回答因为 Python 不知道你想 “按什么规则” 比较啊!比如 Person 类,是按年龄比?还是按名字比?默认情况下,自定义类没有这些比较逻辑,所以一用比较运算符就报错。得咱们自己写__eq____lt__这些特殊方法,告诉 Python 怎么比。__lt__自定义类默认不能比较,是因为没有比较逻辑;核心是定义__eq__(相等)和__lt__(小于)等特殊方法;用装饰器能少写很多代码;实现比较方法后,实例列表能直接用sort()或sorted()排序;
2025-10-11 02:38:14
363
原创 Python 5 个更加实用 f-string 进阶技巧!一定要会
这 5 个 f-string 技巧看着简单,但用好了能省不少事:科学计数法让大数更清爽,格式变量减少重复代码,原始字符串解决路径问题,调试格式让 bug 好找,!s/!r/!a 控制输出形态。建议你现在就打开 Python 编辑器,把以前用或format()的代码改成 f-string,试试这些技巧 —— 用一次就知道有多香!后续遇到其他 f-string 问题,也可以回头看看这篇文章的避坑指南~
2025-10-11 02:36:46
599
原创 Python全网最全基础课程笔记(八)——字典,跟着思维导图和图文来学习,爆肝2w字,无数代码案例!
popitem()方法移除并返回字典中的一个键值对(项)。返回的键值对是一个在字典中任意位置(但在Python 3.7+中,是按照插入顺序的最后一个)的(key, value)元组。如果字典为空,则抛出KeyError。代码语言:javascript代码运行次数:0运行AI代码解释# 初始字典# 使用popitem()移除最后一个键值对。
2025-10-11 02:33:24
889
原创 Python字典到底有序还是无序?
而在3.6之前版本,实现同样的效果就要用到 collections 模块的 OrderedDict 类型,它是 dict 的一个子类,但增加了对插入顺序的保持。这样的好处是让程序的行为更加可预测,比如从一个JSON格式的字符串中读取了数据,修改了其中项,再重新保存,就不会打乱原有的数据结构。这是因为dict定义的相等性比较是基于元素的内容,而不考虑插入的顺序。老版本Python中的dict确实无序,你写的是a、b、c,输出却可能是c、b、a。代码语言:javascript。
2025-10-10 04:53:12
796
原创 Python新建序列,怎么写更快
还是用for循环,不过给函数加上一个装饰器,表示用Numba JIT编译,这个看起来平平无奇的写法会有什么效果呢?一组1000万个0~100的整数序列,用它来生成一个新的序列,要求如果原本序列中是奇数就不变,如果是偶数就变成原来的一半。(numba:1.21秒 vs numpy:3.04秒)新建一个空列表,for循环遍历原列表,依次判断每个元素,如果能被2整除就除以2添加进新列表,否则直接添加进新列表。通过列表解析式生成新列表,不仅代码更简洁明了,耗时还变少了。(自测耗时:0.32秒)
2025-10-10 04:52:31
433
原创 如何借助AI学Python
从算法原理上来说,对于视频的压缩,一方面是对单帧画面内容的压缩,比如大片的蓝天,信息量较少,就可以用更少的空间来存储。另一方面是对不同帧之间内容的压缩,比如一段连续的场景,背景都是相同的,只有少部分区域在变化,就可以只记录变化的部分。前阵子,头部视频UP主『影视飓风』就做了一期视频,分析了现在各大平台上的视频画质,结果甚至不如四年前清晰。它也是一个商业问题:既然大多数观众不太能感觉出来,而压缩后更小的体积可以为公司节省大量的流量成本,那么在观众可接受的范围内尽可能压到极致就是一个商业公司的最佳选择。
2025-10-10 04:50:55
323
原创 一起来做几道有趣的概率题
通过程序枚举得到,其中有一个周二出生的男孩的情况是27种,这27种中又是两个男孩的情况是13种。已知:目击证人在当时场景下正确记忆并区分蓝绿色的准确率是80%,而该地85%的出租车是绿色,15%是蓝色。看到一篇叫做《和上帝一起掷骰子》的文章,里面提到了很多概率有关的问题,不少经过计算得出的概率都与人第一看上去产生的直觉大相径庭。直觉上似乎觉得,你生几个小孩,每个小孩是男孩的概率不都是1/2吗?但答案是13/27。有个人,生了俩孩子,已知其中一个是男孩,这个男孩的生日是星期二,问另一个小孩是男孩的概率。
2025-10-10 04:50:14
548
原创 别弄错了 Python 里的这几个运算符
参与运算的两个值,如果二进制的对应位都为 1,则该位的结果为 1,否则为 0。会出现这样问题的同学,多半是之前用过其他的编程语言,所以习惯性地认为。:只要二进制的对应位有一个为 1,结果位就为 1,否则为 0。:当二进制的对应位不相同时,结果为 1,相同则为 0。那么,最开始的两段代码,如果要实现,正确的符号应该是什么?c 的运算结果是 0001,转回十进制,输出就是 1。c 的运算结果是 0111,转回十进制,输出就是 7。c 的运算结果是 0110,转回十进制,输出就是 6。
2025-10-10 04:47:06
589
原创 别弄错了Python里的这几个运算符
参与运算的两个值,如果二进制的对应位都为 1,则该位的结果为 1,否则为 0。会出现这样问题的同学,多半是之前用过其他的编程语言,所以习惯性地认为。:只要二进制的对应位有一个为 1,结果位就为 1,否则为 0。:当二进制的对应位不相同时,结果为 1,相同则为 0。那么,最开始的两段代码,如果要实现,正确的符号应该是什么?c 的运算结果是 0001,转回十进制,输出就是 1。c 的运算结果是 0111,转回十进制,输出就是 7。c 的运算结果是 0110,转回十进制,输出就是 6。
2025-10-03 03:00:01
438
原创 MySQL 处理重复数据的方式
如果你想设置表中字段first_name,last_name数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为NULL,可设置为NOT NULL。中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。如果你需要读取不重复的数据可以在 SELECT 语句中使用 DISTINCT 关键字来过滤重复数据。
2025-10-02 00:49:18
423
原创 如何删除重复数据(二)
先来看数据,有一张表 test,该表有三个字段:name,age,address。最简单的方法就是让添加主键,这样我们就可以使用上一篇(如何删除重复数据)介绍的方法删除重复数据了。我们可以建一张新表,把去重之后的数据导入到新表里面,再把旧表删除了,然后将新表重命名成原来的名称。则是在给定的所有参数选出最小值,它在 SQL 中的作用是记住所在行的值,以便下一行调取。添加主键的方法简单粗暴,但这也破坏了表结构,因此在很多时候我们不被许可这么操作。代码语言:javascript。
2025-10-02 00:48:11
328
原创 用ChatGPT生成测试数据
以往在开发中,如果需要类似的测试数据,手动编写是非常耗时和低效的。现在,类似的很多编程辅助工作都可交由ChatGPT来处理,从而让开发者把时间花在更重要的事情之上。是的,但那样毕竟也要自己动手写代码,还可能时不时要调整。现在有ChatGPT的辅助,可以秒出数据,岂不是更轻松?除了直接让ChatGPT写代码,我们也可以让它生成一些开发中使用的测试数据。代码语言:javascript。代码语言:javascript。代码语言:javascript。代码语言:javascript。
2025-10-02 00:22:33
308
原创 新特性解读 | MySQL 8.0 对 UNION 的改进
使用 Union 组合查询时,只能使用一条 order by 子句对结果集进行排序,而且必须出现在最后一条出现的 SELECT 语句之后。因为 Union 不允许对于部分结果集进行排序,只能针对最终检索出来的结果集进行排序。所以在对于结果集排序的时候需要使用检索出来的共同字段。UNION 可以将多个 SELECT 查询语句的结果合并成一个结果集,在 MySQL 8.0 中又增添了一些新的功能,我们一起来看下。代码语言:javascript。代码语言:javascript。
2025-10-01 19:27:06
893
原创 MySQL 中查找重复数据,删除重复数据
例2,表中没有主键(可唯一标识的字段),或者主键并非数字类型(也可以删除重复数据,但效率上肯定比较慢)例1,表中有主键(可唯一标识的字段),且该字段为数字类型。查找id最小的重复数据(只查找id字段)查找除id最小的数据外的重复数据。代码语言:javascript。代码语言:javascript。代码语言:javascript。代码语言:javascript。代码语言:javascript。代码语言:javascript。代码语言:javascript。为表添加自增长的id字段。
2025-10-01 19:26:19
302
原创 MySQL 中的事务控制机制
在当前连接中,可以通过设置 autocommit 来修改自动提交模式:代码语言:javascript代码运行次数:0运行AI代码解释如果设置了autocommit=0,当前连接所有事务都需要通过明确的命令来提交或回滚。对于 MyISAM 这种非事务型的表,修改 autocommit 不会有任何影响,因为非事务型的表,没有 commit或 rollback 的概念,它会一直处于 autocommit 启用的状态。有些命令,在执行之前会强制执行 commit 提交当前连接的事务。
2025-10-01 04:14:27
399
原创 MySQL 事务特性和事务隔离级别
上面讲到了事务的隔离性,当有多个任务时,应当让多个事务同时执行,这就是事务的并发。既然事务存在并发执行,那必然存在两个事务操作同一个数据的冲突问题,那么我们来看一下会出现哪些问题下面介绍脏读、不可重复读、幻读时会涉及到事务隔离级别,可先略过。按照提示设置事务隔离级别即可,本文后面会介绍事务隔离级别。测试这几个事务并发问题可以通过打开两个终端窗口进行测试查看事务隔离级别代码语言:javascript代码运行次数:0运行AI代码解释测试脏读: 将事务隔离级别修改为读未提交。
2025-09-30 22:58:20
314
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅