编程语言
文章平均质量分 86
本专栏将记录和分享Python、C++、Java等编程语言的学习过程与实践经验。通过深入浅出的讲解和实际案例的分析,帮助读者掌握编程基础和高级技巧,提高编程能力和问题解决能力。适合初学者和有一定基础的开发者,希望与大家一起在编程的道路上不断进步。
Iareges
这个作者很懒,什么都没留下…
展开
-
C++中的万能头文件
它是一个包含了每一个标准库的头文件。在算法竞赛中节约时间;减少了编写所有必要头文件的工作量。不是GNU C++库的标准头文件,在部分情况下会编译失败;包含了很多不必要的东西,会大大增加编译时间。原创 2023-02-10 14:26:45 · 34055 阅读 · 6 评论 -
Python中的抽象基类(ABC)
抽象基类(Abstract Base Classes,ABCs)是一种特殊的类,它声明了一组方法和属性,但不完全实现它们。这些类不能被实例化,其主要目的是被继承和实现。通过定义一个或多个抽象方法,ABCs为子类提供了一个框架,要求子类实现特定的方法或属性。抽象基类有助于确保子类具有一致的接口设计。这意味着所有继承自同一个抽象基类的子类都将实现相同的方法和属性,从而实现了接口的一致性和可预测性。这种模式特别适用于需要多种实现相同接口的场景,如插件系统、策略模式等。原创 2024-04-09 20:16:01 · 468 阅读 · 0 评论 -
一文搞懂dataclass和field
它旨在通过使用装饰器和类型注解来减少样板代码,特别是在创建一个。原创 2024-03-15 17:19:17 · 972 阅读 · 1 评论 -
浅谈Mixin(混入模式)
在面向对象编程中,追求代码复用性和灵活性是主要目标之一。Python作为一种功能强大的编程语言,为达成这些目标提供了诸多机制。其中,Mixin概念便是经常被提及的一种模式。所谓Mixin,亦即混入(Mix-in),是一种编程模式,通常表现为一些特定的类。这些类封装了一些独立的功能单元,以便其它子类通过继承来获得,其主旨在于将这些功能融入子类中。得益于Python的多重继承特性,一个子类能够继承多个Mixin类,这使得根据需求灵活组合不同功能成为可能。原创 2024-03-11 11:40:42 · 543 阅读 · 0 评论 -
Python中的泛型编程
泛型编程的引入主要是为了解决代码重用的问题。在没有泛型的情况下,如果你想要实现一个功能(比如排序或查找),对于不同类型的数据(整数、浮点数、字符串等)你可能需要写多个几乎相同的函数。这不仅增加了代码量,也增加了维护成本和出错的机会。泛型编程允许你编写与类型无关的代码,从而使得一个函数或一个类可以用于多种类型,减少了代码的重复,提高了代码的复用性和可维护性。原创 2024-03-08 18:16:45 · 1658 阅读 · 1 评论 -
如何高效地将大文件按行数进行均匀划分?
⚠️ 读者可能注意到,在实验三中,PFS划分结果的行数和并不等于623517,而是等于626323,这是因为两者统计行数的方式不一样。,如果单机去跑效率将会十分低下,考虑将这个大文件均匀地划分成多份,让一台机器负责一份,最后再合并多份的结果。首先可以明确的是,最后一份的行数肯定要小于前两份的行数,只需要计算出。实验二:选用4.3G的txt文件,总行数为3275572,取。实验一:选用1.4G的txt文件,总行数为419402,取。实验三:选用1.8G的txt文件,总行数为623517,取。原创 2024-03-05 00:11:13 · 1091 阅读 · 0 评论 -
一种简易的多进程文件读写器
在数据清洗场景下,我们可能需要对一个.jsonl文件清洗以得到另一个.jsonl文件。一种直观的做法就是逐行读取,逐行清洗,然后逐行写入,这一流程的示意图如下:pass这种单进程的处理方法非常耗时,若改用多进程,则能显著提高效率。注意到在时间消耗方面,有Clean≫Read≈WriteClean≫Read≈Write因此可以考虑让一个进程去ReadRead,多个进程去CleanWriteCleanWrite。原创 2024-02-25 21:56:48 · 884 阅读 · 2 评论 -
Python判断列表A中是否有元素出现在了列表B中
方法耗时(秒)暴力法≈480000≈480000哈希表法0.51∼0.530.51∼0.53集合法0.50.50.5如果有更快的方法欢迎在评论区补充~原创 2024-02-08 22:28:01 · 951 阅读 · 0 评论 -
Faiss的基本使用
Faiss(Facebook AI Similarity Search)是一个用于高效相似性搜索和密集向量聚类的库。它包含了能够在任意大小的向量集合中进行搜索的算法,甚至适用于那些可能无法完全装入内存的数据集。此外,Faiss 还包含了评估和参数调优的支持代码。Faiss 用 C++ 编写,并为 Python/numpy 提供了完整的接口。其中一些最有用的算法实现了 GPU 支持。Faiss 提供了多种相似性搜索方法。原创 2023-12-18 15:18:36 · 3494 阅读 · 1 评论 -
恢复排序后的数组
代表把第6个位置上的数字移动到第2个位置上。若要恢复原先的乱序,就要把第2个位置上的数字移动到第6个位置上。排序的过程可以认为是把箭头左边对应位置上的数字移动到箭头右边对应的位置上,例如。函数,但要从有序恢复至原先的乱序又该如何做呢?如何获得上面的映射呢?首先我们可以获得排序后的。我们可以在排序的时候记录下索引的变化。处的元素就会被彻底覆盖掉,无法再恢复。有一个问题是,空间复杂度一定是。从乱序到有序只需要调用一下。原创 2023-12-16 15:32:09 · 485 阅读 · 0 评论 -
详解Python中的json库
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,用于在不同应用程序之间传递数据。它是一种文本格式,易于阅读和编写,同时也易于解析和生成。JSON最初是由Douglas Crockford于2001年提出的,它基于JavaScript对象字面量语法,但已经成为一种独立于编程语言的数据格式。乍一看json对象和python中的字典长得差不多,但前者是一种数据格式,而后者是一种数据结构。具体来讲,json对象由一个大括号{}组成,大括号里保存的是若干个。原创 2023-09-23 23:22:50 · 2944 阅读 · 0 评论 -
Python中的上下文管理器
如果在try块中发生异常,Python会跳转到except块来处理异常。finally块中的代码总是会执行,无论是否发生异常。只有在try块中没有引发异常时,才会执行else块中的代码。返回的列表中,每一个元素都代表了文件中的一行内容(会包含末尾的换行符)。很多时候我们不知道try块中可能会引发什么样的异常,为此我们可以使用绝大部分异常的一个父类。,它用于自动管理资源,无论过程中是否发生错误,都可以保证对资源的正确处理。,且try块中第一个异常之后到第一个except之前的语句都不会被执行。原创 2023-09-11 17:52:07 · 373 阅读 · 0 评论 -
Python中关于可变循环的一些坑
观察下面两种循环,它们的输出结果相同吗?综上,如果希望循环是可变的,那么请使用。的数组上进行遍历时,使用。由此可以看出,在一个。原创 2023-08-13 20:39:01 · 352 阅读 · 0 评论 -
macOS为Sublime Text 4配置C++/Python开发环境
超详细!!!在macOS上为Sublime Text 4配置C++及Python的开发环境原创 2023-01-07 22:40:14 · 3569 阅读 · 0 评论 -
argparse——命令行参数解析
是 Python 的一个标准库,用于命令行参数的解析,这意味着我们无需在代码中手动为变量赋值,而是可以直接在命令行中向程序传递相应的参数,再由变量去读取这些参数。在之前的学习过程中,可能你已经注意到了,每次我们为解析器添加完相应的选项/位置参数后,都要执行一遍。可以看出,如果在命令行中没有提供相应的选项,并且该选项也没有默认值,则在命名空间中该选项的值为。的,如果我们调换顺序,则帮助信息中的两个参数的位置也将调换,这也诠释了 “位置” 的含义。后面跟的数字不是1,3,5中的一个就会报错。......原创 2022-08-09 23:05:32 · 4762 阅读 · 5 评论 -
Python 2D列表转1D列表的常见方法汇总
Python二维列表转一维列表的常见方法汇总原创 2022-07-09 22:09:33 · 964 阅读 · 8 评论 -
史上最易懂的Python正则表达式教程
Python正则表达式原创 2022-06-06 11:34:07 · 295 阅读 · 9 评论 -
conda常用命令汇总
conda常用命令汇总原创 2022-06-03 08:58:42 · 45535 阅读 · 21 评论 -
史上最易懂的f-string教程,收藏这一篇就够了
Python中的字符串格式化——f-string原创 2022-05-26 11:15:45 · 7245 阅读 · 10 评论 -
深入浅出Python中的装饰器
目录一、闭包二、装饰器三、使用多个装饰器四、被装饰的函数带有参数五、带参数的装饰器六、使用类作为装饰器七、内置装饰器7.1 @classmethod7.2 @staticmethod7.3 @property一、闭包要了解什么是装饰器(decorator),我们首先需要知道闭包(closure)的概念。闭包,又称闭包函数或者闭合函数,通俗一点来讲,当某个函数被当成对象返回时还夹带了外部变量,就形成了一个闭包。以打印Hello World为例,我们先来看一下嵌套函数的结构应该是什么样的:def pr原创 2022-05-17 18:14:36 · 1152 阅读 · 44 评论 -
Python中的迭代器与生成器
目录一、迭代器(Iterator)1.1 可迭代对象(Iterable)1.2 将可迭代对象转化为迭代器1.3 构造迭代器二、生成器(Generator)2.1 使用 `()` 构造生成器2.2 使用带有 `yield` 关键字的函数构造生成器一、迭代器(Iterator)1.1 可迭代对象(Iterable)可迭代对象,可以简单理解为可遍历对象,即能够使用 for 循环遍历的对象。Python中常见的可迭代对象有:列表、元组、字符串、集合、range、字典等。迭代器和生成器都是可迭代对象。对原创 2022-05-04 18:45:13 · 2662 阅读 · 29 评论 -
半小时速通Python标准库os
目录前言一、系统&变量1.1 os.name1.2 os.getcwd()1.3 os.environ1.4 os.sep二、文件&目录2.1 os.listdir()2.2 os.chdir()2.3 os.mkdir()2.4 os.makedirs()2.5 os.rmdir()2.6 os.removedirs()2.7 os.remove()2.8 os.rename()三、路径(os.path)3.1 os.path.basename()3.2 os.path.dirname()原创 2022-05-04 16:00:32 · 1078 阅读 · 4 评论