
数据分析
文章平均质量分 75
宋宋讲编程
千锋互联金牌企业培训讲师
12年互联网行业一线企业从业经验
5年企业培训及咨询管理经验
原百度数据分析师
药明康德(亚洲最大CRO公司)数据分析师
生命科学研究所数据分析师
央视网数据分析师
精通Caffe、Tensorflow、MxNet、Torch、CNTK等深度学习框架;掌握Python/JAVA/C++多门语言,对机器学习、自然语言处理、知识图谱、深度学习、计算机视觉、语音识别及合成等领域有较为深入的研究,有较多的建模实践经验,能够根据应用场景选择适当的方法进行必要的数据准备和算法实现;
在人工智能的理论研究(含创新算法、人工智能理论的研究,如利用贝叶斯原理等方法解决特定人工智能算法问
展开
-
小白必看Python爬虫Selenium库详细教程
在我们爬取网页过程中,经常发现我们想要获得的数据并不能简单的通过解析HTML代码获取,这些数据是通过AJAX异步加载方式或经过JS渲染后才呈现在页面上显示出来。使用隐式等待时,如果webdriver没有找到指定的元素,将继续等待。如果定位到父frame,是无法查找到子frame的信息的,因此需要切换到子frame再进行查找。如果条件不成立,则等待最长时间为等待时间,如果超过等待时间后仍然没有满足等待等待条件,则抛出异常。查找多个元素和查找单个元素的方法基本一致(只需要将查找单个元素的func里加一个s)。原创 2023-01-13 09:36:21 · 1175 阅读 · 1 评论 -
2个学妹看见都惊呆的 Python 小项目,快快拿去
tkinter 的优点是简单易用、与 Python 的结合度好。本例采用的 Python 版本为 3.8,如果想在 python 2.x下使用 tkinter,请先进行安装。需要注意的是,不同 Python 版本下的 tkinter 使用方式可能略有不同,建议采用 Python3.x 版本。从结构上来说,一个简单的图形界面,需要由界面组件、组件的事件监听器(响应各类事件的逻辑)和具体的事件处理逻辑组成。界面实现的主要工作是创建各个界面组件对象,对其进行初始化,以及控制各组件之间的层次关系和布局。原创 2023-01-13 09:32:31 · 639 阅读 · 0 评论 -
超全汇总!小白必看 Python 标准库介绍
【代码】超全汇总!小白必看 Python 标准库介绍。原创 2023-01-13 09:29:53 · 543 阅读 · 0 评论 -
这样直接运行Python命令,电脑等于“裸奔”
1、如果要在下载文件夹~/Downloads中使用Python编写的工具,请养成良好习惯,使用pip所在路径/path/to/venv/bin/pip,而不是输入/path/to/venv/bin/python -m pip。这似乎是一件很合理的事情。如果你运行的是正确安装的Python,那么Python安装目录和virtualenv之外唯一会自动添加到系统路径的位置,就是当前主程序的安装目录。所以问题就来了,如果你的下载文件中有一个叫做pip.py的文件,那么你将它将取代系统自带的pip,接管你的程序。原创 2023-01-13 09:27:57 · 457 阅读 · 0 评论 -
一个Python爬虫案例,带你掌握xpath数据解析方法
2.调用etree对象中的xpath方法结合xpath表达式实现标签的定位和内容的捕获。https://sc.chinaz.com/jianli/free.html完整代码。https://www.aqistudy.cn/historydata/完整代码。索引定位://div[@class='song']/p[3] 索引从1开始的。https://pic.netbian.com/4kmeinv/完整代码。https://xa.58.com/ershoufang/完整代码。//:表示多个层级。原创 2023-01-13 09:26:26 · 408 阅读 · 0 评论 -
老司机熬夜总结Python 使用和高性能技巧大集合
在 Python 中虽然也可以通过 @property、@setter、@deleter 设置对应的 Set 和 Get 函数,我们应避免不必要的抽象,这会比直接访问慢 4 - 5 倍。C/C++ 的习惯是把输入输出参数都列为函数的参数,通过指针改变输出参数的值,函数的返回值是执行状态,函数调用方对返回值进行检查,判断是否成功执行。对别名的修改会影响原变量,(浅)复制中的元素是原列表中元素的别名,而深层复制是递归的进行复制,对深层复制的修改不影响原变量。C/C++ 的习惯是定义一个临时变量,用来交换值。原创 2023-01-13 09:24:23 · 187 阅读 · 0 评论 -
从零开始学数据分析之数据分析概述
首先,python有一个专门的配色包jiffyclub/brewer2mpl,提供了从美术角度来讲的精美配色(戳这里感受ColorBrewer: Color Advice for Maps)。嘛seaborn 是一个调用 matplotlib 的统计绘图库,上图:(https://github.com/mwaskom/seaborn)这还没完,Matplotlib 还支持Latex公式的插入,当别人画的图还是这个样子的时候(以下图片引用自Matplotlib Tutorial(译))原创 2023-01-13 09:21:48 · 182 阅读 · 0 评论 -
Python实现一个简单的毕业生信息管理系统
我想了想前段时间刚学习的列表,这个简单啊 ,设计一个学生信息列表,然后列表里面再存每个学生详细信息的列表,然后来实现一个基本的增删查改,这个不难啊!一时语塞的我 :我 *******(这就是不看文档的后果吧!毕业生信息管理系统,实现学生个人信息基本的增删改查,大致实现了一下功能,但是万万没想到!实现一个自己的选题----1.查看毕业学生信息列表。算了算了,再重写一个!2.增加毕业学生信息。3.修改毕业学生信息。原创 2023-01-11 09:35:26 · 344 阅读 · 1 评论 -
Python实现循环的最快方式(for、while等速度对比)
假如任意一种简单的单步操作耗费的时间为1个单位,将此操作重复执行上万次,最终耗费的时间也将增长上万倍。内置函数Sum的累加操作实际上也是一种循环,但它由C语言实现,而For循环中的求和操作是由纯Python代码s += i实现的。这里的思路就是,既然循环的效率低,一段代码要重复执行上亿次。对于上面的求等差数列之和的操作,借助于Python内置的Sum函数,可以获得远大于 For或While循环的执行效率。While和For是Python中常用的两种实现循环的关键字,它们的运行效率实际上是有差距的。原创 2023-01-11 09:32:11 · 501 阅读 · 0 评论 -
教你用Python绘制炫酷专业插图
首先,python有一个专门的配色包jiffyclub/brewer2mpl,提供了从美术角度来讲的精美配色(戳这里感受ColorBrewer: Color Advice for Maps)。嘛seaborn 是一个调用 matplotlib 的统计绘图库,上图:(https://github.com/mwaskom/seaborn)这还没完,Matplotlib 还支持Latex公式的插入,当别人画的图还是这个样子的时候(以下图片引用自Matplotlib Tutorial(译))原创 2023-01-11 09:30:48 · 377 阅读 · 0 评论 -
20个Python使用小技巧,建议收藏
字符串拼接,例如 a + ':' + b + ':' + c 会创造大量无用的中间变量,':',join([a, b, c]) 效率会高不少。另外需要考虑字符串拼接是否必要,例如 print(':'.join([a, b, c])) 效率比 print(a, b, c, sep=':') 低。对别名的修改会影响原变量,(浅)复制中的元素是原列表中元素的别名,而深层复制是递归的进行复制,对深层复制的修改不影响原变量。局部变量的查找比全局变量更快,将全局变量的代码定义在函数中运行通常会快 15%-30%。原创 2023-01-11 09:29:52 · 188 阅读 · 0 评论 -
使用Python分析14亿条数据
这次探索 确实 展示了,使用 numpy 和 初出茅庐的 pytubes 以及标准的商用硬件和 Python,在合理的时间内从十亿行数据的数据集中加载,处理和提取任意的统计信息是可行的,通过提取这些信息,处理不同长度的字符串数据的额外消耗被忽略掉了,但是我们仍然需要对比不同字符串的数值来区分哪些行数据是有我们感兴趣的字段的。使用一个简单的技巧,创建基于年份的数组,2008 个元素长度意味着每一年的索引等于年份的数字,因此,举个例子,1995 就只是获取 1995 年的元素的问题了。原创 2023-01-11 09:28:44 · 218 阅读 · 0 评论 -
利用Python去除图片水印,太神奇了!
1、标定噪声的特征,使用cv2.inRange二值化标识噪声对图片进行二值化处理,具体代码:cv2.inRange(img, np.array([200, 200, 240]), np.array([255, 255, 255])),把[200, 200, 200]~[255, 255, 255]以外的颜色处理为0;OpenCV应用领域有:人机互动、物体识别、 图像分割、人脸识别、动作识别、运动跟踪、机器人、运动分析、机器视觉、结构分析、汽车安全驾驶等。4、把原图片、去掉水印的新图片,进行重叠合并;原创 2023-01-03 11:08:33 · 5727 阅读 · 2 评论 -
这个Python脚本,让工作自动向你汇报进度
现实中,这个过程只需要10-20秒,但现在假设你是华尔街炙手可热的定量分析师,正在处理几百万笔贷款。否则,检查给定的数据类型,不是一个list,就创建一个,这就使得可以用下面的for循环来遍历项。由于直接处理不同的电子邮件供应商和他们各自的服务器,需要不同的SMTP地址。如果偶尔抛出错误,还可以添加一个try-except语句来捕获错误,并将其添加到一个列表中,以包含在更新和/或完成电子邮件中。我们需要重点从模型中生成的图像,损失和精度图,当前的训练时间,和一个模型的名称。代码同样非常简单,只有一处例外。原创 2023-01-03 11:03:13 · 306 阅读 · 0 评论 -
YYDS!轻松用Python控制你的手机
下面这个不是必须的,但很有必要:为了让我们开发脚本时更轻松,可以安装一个名为scrcpy的开源程序,该程序允许我们使用鼠标和键盘在我们的计算机上显示和控制我们的android手机设备。正如我之前说过的,这只是复制你通常会做的事情,因此,如果首先手动进行操作并写下步骤,则思考如何做事情是最好的。要启用ADB,你的设备必须首先解锁开发者选项并启用USB调试——要解锁开发人员选项,转到设备设置,然后向下滚动到“关于”部分,找到设备上当前软件的内部版本号。然后,我们可以获得连接的设备的列表。原创 2023-01-03 10:58:05 · 1435 阅读 · 0 评论 -
150行Python代码模拟太阳系行星运转
如果你很有情调的话,还可以在循环体之前加一段代码,配曲music。注:此处音乐力求达到宏伟效果,因此选的是 Victory.mp3。今天我们用Python来模拟一下太阳系行星运动轨迹玩玩~定义窗口大小、标题名称、字体设置、创建时钟。先上成品图(运行效果含音乐的呦)首先我们需要准备这样一些材料。想要实现这样的效果并不难。实现各个星球绕着太阳转。原创 2023-01-03 10:57:09 · 1956 阅读 · 0 评论 -
狂揽两千星,速度百倍提升,高性能 Python 编译器 Codon 火了!
例如,一些 Python 的模块还没有在 Codon 中实现,一些 Python 的动态特性是不允许的。Codon 尽可能地遵循 CPython 语法、语义和 API,但在一些特殊情况下,考虑性能原因,Codon 与 CPython 会有些不同,例如 Codon 为 64 位 int,CPython 是任意宽度 int。原因有很多,例如更好的容器实现,Codon 不使用目标文件和内联所有库代码,或者不使用 C 执行的特定于 Codon 的编译器优化或 C++。对于非生产用途,Codon 始终是免费的。原创 2023-01-03 10:55:24 · 286 阅读 · 0 评论 -
Python 竟能开发如此精美的俄罗斯方块【附源码】
俄罗斯方块是由 4 个小方块组成不同形状的板块,随机从屏幕上方落下,按方向键调整板块的位置和方向,在底部拼出完整的一行或几行。这些完整的横条会消失,给新落下来的板块腾出空间,并获得分数奖励。没有被消除掉的方块不断堆积,一旦堆到顶端,便告输,游戏结束。着陆――当一个方块到达边框的底部或接触到在其他的盒子话,就说这个方块着陆了。方块――从边框顶掉下的东西,游戏者可以翻转和改变位置。形状――不同类型的方块。边框――由 15*25 个空格组成,方块就落在这里面。盒子――组成方块的其中小方块,是组成方块的基本单元。原创 2022-12-28 10:01:47 · 2629 阅读 · 1 评论 -
用Python制作各种用途的二维码
在谷歌搜索Python中的QR码时,它并没有出现在最前面,甚至在模块名称中也没有 "QR",但不要因此而放弃--它是一个很棒的工具。网上有很多文章,建议将二维码创造性地用于商业和营销,因此,在本文的最后,我想分享一些我自己的 "家用式 "想法,可能会吸引你。只需多写一行代码,我就能创建一个更加丰富多彩的QR码,在这种情况下,我最喜欢的一张图片实际上是一个用Piet编程语言编写的 "Hello World "脚本。使用同样的方法和稍大的有效载荷,我第一个任务(分享视频信息)的Python代码是微不足道的。原创 2022-12-28 09:59:13 · 402 阅读 · 4 评论 -
Python操作的5个坏习惯,你中了几个呢?
因为 Python 列表是可变对象,而且函数传参又是传的引用,所以当第二次调用 func 方法前,b 中已经有了元素 1,调用后 b 最终有两个元素 1 和 2。但是,如果是在一个比较复杂的方法里面,你有可能会粗心的忽略这一点,从而会碰到一些莫名其妙的问题。这里,我们使用了相对于其他语言如 C、PHP 等不同的一种方式,完成了相同的功能,看起来代码也简洁了不少。同样,这也是没有问题的,但看起来并不直观。捕获不确定的异常,有时也会让我们的程序出现莫名其妙的问题,我们应该避免这样做。原创 2022-12-27 16:15:18 · 122 阅读 · 0 评论 -
实战案例!Python+SQL京东用户行为分析
3.复购率较低,说明用户对平台购物体验不满,需要找出用户槽点,提高用户购物满意度,优化商品推送机制,对老用户给予特别福利,提高他们所享受权益。消费用户人均访问量和总访问量占比都在平均值以上,有过消费记录的用户更愿意在网站上花费更多时间,说明网站的购物体验尚可,老用户对网站有一定依赖性,对没有过消费记录的用户要让快速了解产品的使用方法和价值,加强用户和平台的黏连。整个计算周期内,最高购物次数为133次,最低为1次,大部分用户的购物次数在6次以下,可适当增加推广,完善购物体验,提高用户消费次数。原创 2022-12-27 14:56:08 · 862 阅读 · 0 评论 -
解决日常问题的12个Python Pro Snippets
现在,此代码段将帮助你将递归限制重置为任意数字,默认设置为 1000,这意味着如果达到 1000 递归限制,程序将抛出错误,为了避免这种情况,你可以使用以下代码段。使 Python 成为顶级编程语言的一件事是它为程序员提供了自由,你可以在函数调用中传递无限的参数,而无需在函数参数中声明它们,看看下面的代码示例。现在,你可以使用以下代码段在运行时检查你的 python 版本。原创 2022-12-27 14:54:44 · 209 阅读 · 0 评论 -
7个你可能从未使用过的Python隐藏技巧
在今天的内容中,我将与你分享7 个你可能从未使用过的Python 技巧。zip 方法采用两个可迭代的内容并将它们合并为一个元组,你可以使用此 zip 方法来迭代列表、字典。下面我展示了一些在函数、类等中使用 Pass 关键字的例子。Eval() 函数接受一个字符串参数,如果字符串参数是表达式,那么 ,eval() 将评估表达式。现在,可以声明,也可以稍后在程序中使用调用的函数属性。当你运行上述命令时,你将看到以下屏幕,该屏幕将显示启动服务器托管的 ip:port。下面我展示了一个示例代码。原创 2022-12-20 15:29:35 · 544 阅读 · 0 评论 -
用一行代码在几秒钟内抓取任何网站
当然,你也可以只收到视频的链接,然后再下载,但这会不太酷。好的,现在我们的网站已经初始化,我们对 tikocash.com 上存在的所有子网站感兴趣,要找出这一点,请让 Web 对象接收所有子页面的链接。好吧,如前所述,该页面只是网站中的一个站点,让我们通过初始化W3schools页面,来尝试不同的示例。好的,到目前为止,我们已经看到了很多关于网站的东西,但是,我们还没有发现 Page 是做什么的。好吧,更详细的链接只不过是外部链接,所以,我们做了同样的请求,但这次包括外部,但不包括域。原创 2022-12-20 15:25:06 · 351 阅读 · 0 评论 -
Python-Docx库 | Word与Python的完美结合
Python-Docx是用于创建和更新Microsoft Word(.docx)文件的Python库。日常需要经常处理Word文档,用Python的免费第三方包:Python-Docx处理docx十分方便。而且这个包和pandas包结合使用,可以在word插入excel表格,节省了很多复制、粘贴、调整表格样式的时间,真的很方便!但是要注意:Python-Docx只能处理docx、docx、docx文件!下面给大家介绍一下如何使用Python-Docx吧,抛砖引玉~原创 2022-12-20 15:21:05 · 1989 阅读 · 0 评论 -
超干!如何编写完美的 Python 命令行程序?
但是,仔细看了这段代码后,我发现(虽然有点主观)函数开头的几行(从7行到13行)定义了参数,但定义方式并不太优雅:它太臃肿了,而且完全是程式化的。脚本参数定义中的nargs参数指定了该参数期待的单词的数目(一个用引号括起来的字符串算一个单词)。幸运的是,有个 Python 库能提供与 argparse 同样的功能(甚至还能提供更多),它的代码风格更优雅。这段代码也遵循了上述规则,而且与前面的手工编写的脚本相比,可以提供更准确的文档,以及更具有交互性的错误处理:。这样就得到了凯撒脚本的最后一个版本:。原创 2022-12-20 15:18:26 · 221 阅读 · 0 评论 -
Python内置函数最全总结,建议收藏!
返回由给定实参创建的“内存视图”对象, Python 代码访问一个对象的内部数据,只要该对象支持 缓冲区协议 而无需进行拷贝。不带参数时返回当前范围内的变量,方法和定义的类型列表;带参数时返回参数的属性,方法列表。接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False。接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False。判断object是否为类classinfo的实例,是返回true。返回一个没有特征的新对象。返回可迭代对象的下一个元素。原创 2022-12-20 15:16:27 · 532 阅读 · 0 评论 -
Python异步编程和事件驱动
1、异步编程同步和异步同步调用指的是线程发起调用后,一直等待调用返回后才继续执行下一步操作,这并不代表CPU在这段时间内也会一直等待,操作系统多半会切换到另一个线程上去,等到调用返回后再切换回原来的线程。异步就相反,发起调用后,线程继续向下执行,当调用返回后,通过某种手段来通知调用者。解释和说明我们需要注意同步和异步过程中的调用返回,指的是内核进程将数据复制到调用进程。上面说的顺序式编程里面,通常调用就是同步的,上一步执行结束之后才会执行下一步。而异步编程中,如果遇到等待的操作,会继续往下执行,直到请求返回原创 2022-12-13 10:48:36 · 278 阅读 · 0 评论 -
用 Python 编写的 Python 解释器,你会吗?
之后,我们可以添加基于表达式的规则。t_ 是一个特殊的前缀,表示定义标记的规则。每条词法规则都是用正则表达式制作的,与 Python 中的 re 模块兼容。根据产生式,: 的左侧被替换为右侧的其中一个值替换。对于上下文无关文法,我们用上下文无关语法,它是描述语言中所有可能语法的规则集。真正的魔法是由编译器和解释器完成,它们弥合了两者之间的差距。输入的标记是诸如 NUM、FLOAT、+、-、*、/ 之类的符号,称作终端(无法继续分解或产生其他符号的字符)。紫色字符代表的是标记的名称,其后是标记的具体内容。原创 2022-12-13 10:45:18 · 848 阅读 · 0 评论 -
Python-Docx库 | Word与Python的完美结合
Python-Docx是用于创建和更新Microsoft Word(.docx)文件的Python库。日常需要经常处理Word文档,用Python的免费第三方包:Python-Docx处理docx十分方便。而且这个包和pandas包结合使用,可以在word插入excel表格,节省了很多复制、粘贴、调整表格样式的时间,真的很方便!但是要注意:Python-Docx只能处理docx、docx、docx文件!下面给大家介绍一下如何使用Python-Docx吧,抛砖引玉~原创 2022-12-13 10:38:12 · 1205 阅读 · 0 评论 -
超干!如何编写完美的 Python 命令行程序?
但是,仔细看了这段代码后,我发现(虽然有点主观)函数开头的几行(从7行到13行)定义了参数,但定义方式并不太优雅:它太臃肿了,而且完全是程式化的。正像help文本中解释的那样,如果没有提供input_file,就使用click.promp让用户直接在提示符下输入文本,在加密模式下这些文本是隐藏的。脚本参数定义中的nargs参数指定了该参数期待的单词的数目(一个用引号括起来的字符串算一个单词)。幸运的是,有个 Python 库能提供与 argparse 同样的功能(甚至还能提供更多),它的代码风格更优雅。原创 2022-12-13 10:35:54 · 573 阅读 · 0 评论 -
ython内置函数最全总结,建议收藏
返回由给定实参创建的“内存视图”对象, Python 代码访问一个对象的内部数据,只要该对象支持 缓冲区协议 而无需进行拷贝。不带参数时返回当前范围内的变量,方法和定义的类型列表;带参数时返回参数的属性,方法列表。接受一个迭代器,如果迭代器的所有元素都为真,那么返回True,否则返回False。接受一个迭代器,如果迭代器里有一个元素为真,那么返回True,否则返回False。判断object是否为类classinfo的实例,是返回true。返回一个没有特征的新对象。返回可迭代对象的下一个元素。原创 2022-12-13 10:34:27 · 171 阅读 · 0 评论 -
这5种炫酷的动态图,都是用Python实现的!
这是一种可用于识别离群值(远离其它数据的单条线)、聚类、趋势和冗余变量(比如如果两个变量在每个观察上的值都相近,那么它们将位于同一水平线上,表示存在冗余)的好用工具。你只需要定义你的所有类别,并声明它们之间的层次结构(见以下代码中的parents参数)并分配对应的值即可,这在我们案例中即为group by语句的输出。数据可以帮助我们描述这个世界、阐释自己的想法和展示自己的成果,但如果只有单调乏味的文本和数字,我们却往往能难抓住观众的眼球。在报告KPI等成功指标并展示其与你的目标的距离时,可以使用这种图表。原创 2022-12-13 10:32:37 · 577 阅读 · 0 评论 -
Python制作进度条,原来有这么多方法
如果你之前没用过进度条,八成是觉得它会增加不必要的复杂性或者很难维护,其实不然。要加一个进度条其实只需要几行代码。正在上传…重新上传取消在这几行代码中,我们可以看看如何在命令行脚本以及 PySimpleGUI UI 中添加进度条。下文将介绍 4 个常用的 Python 进度条库:第一个要介绍的 Python 库是 Progress。你只需要定义迭代的次数、进度条类型并在每次迭代时告知进度条。Progress 实现的进度条效果如下:Progressbar 的增量进度条如果你不喜欢该进度条的格式,还可以从原创 2022-12-07 14:50:09 · 631 阅读 · 0 评论 -
Pandas中使用Merge、Join 、Concat合并数据效率对比
在 Pandas 中有很多种方法可以进行dataframe(数据框)的合并。本文将研究这些不同的方法,以及如何将它们执行速度的对比。合并DFPandas 使用 .merge() 方法来执行合并。运行我们的代码后,有两个 DataFrame,如下所示。使用 merge() 函数进一步合并。这产生了下面的新数据;.join() 方法也可以将不同索引的 DataFrame 组合成一个新的 DataFrame。我们可以使用参数‘on’参数指定根据哪列进行合并。让我们看看下面的例子,我们如何将原创 2022-12-07 14:38:59 · 1157 阅读 · 0 评论 -
10个实用的数据可视化的图表总结
可视化是一种方便的观察数据的方式,可以一目了然地了解数据块。我们经常使用柱状图、直方图、饼图、箱图、热图、散点图、线状图等。这些典型的图对于数据可视化是必不可少的。除了这些被广泛使用的图表外,还有许多很好的却很少被使用的可视化方法,这些图有助于完成我们的工作,下面我们看看有那些图可以进行。1、平行坐标图(Parallel Coordinate)我们最多可以可视化 3 维数据。但是我们有时需要可视化超过 3 维的数据才能获得更多的信息。我们经常使用 PCA 或 t-SNE 来降维并绘制它。在降维的情况下,可能原创 2022-12-07 14:34:07 · 339 阅读 · 0 评论 -
十大经典排序算法Python版实现(附动图演示)
排序算法是《数据结构与算法》中最基本的算法之一。本文介绍10种常见的内部排序算法,及如何用Python实现。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:关于时间复杂度:平方阶 (O(n2)) 排序:各类简单排序,直接插入、直接选择和冒泡排序;线性对数阶 (O(nlog2n)) 排序:原创 2022-12-07 14:21:56 · 277 阅读 · 0 评论 -
15个让新手爱不释手的Python高级库
为什么我喜欢Python对于初学者来说,这是一种简单易学的编程语言;另一个原因:大量开箱即用的第三方库,正是 23 万个由用户提供的软件包使得Python真正强大和流行。在本文中,我挑选了15个最有用的软件包,介绍它们的功能和特点。1. DashDash是比较新的软件包,它是用纯Python构建数据可视化app的理想选择,因此特别适合处理数据的任何人。Dash是Flask,Plotly.js和React.js的混合体。原创 2022-11-28 16:34:49 · 1599 阅读 · 1 评论 -
13个可能未使用过的Python特性
Python 是顶级编程语言之一,它具有许多程序员从未使用过的许多隐藏功能。在这篇文章中,我将分享你可能从未使用过的13 个 Python 特性。当你的循环完成其迭代而没有任何中断时,将执行此 else 语句。这是一个 step 参数,可以通过采取几个步骤来分割你的列表。Doctest 功能将让你测试你的功能并显示你的测试报告。这是 Python 的另一个很棒的特性,它可以让你设置 Python 程序的递归限制。如果你键入以下代码并运行它,这是一个有趣的功能。大多数程序员不知道的令人难以置信的功能列表。原创 2022-11-28 16:30:42 · 813 阅读 · 0 评论 -
ULID 是什么?比 UUID 更好用的全局唯一标识符?
和 UUID 要么基于随机数,要么基于时间戳不同,ULID 是既基于时间戳又基于随机数,时间戳精确到毫秒,毫秒内有1.21e + 24个随机数,不存在冲突的风险,而且转换成字符串比 UUID 更加友好。支持时间戳值类型有int,float,str,bytes,bytearray,memoryview,datetime,Timestamp,和ULID。支持随机值类型有int,float,str,bytes,bytearray,memoryview,Randomness,和ULID。原创 2022-11-28 16:26:48 · 431 阅读 · 0 评论