python
文章平均质量分 59
Not_Today.
道法自然
展开
-
bisect模块
bisect模块提供的函数有:bisect.bisect_left(a,x, lo=0, hi=len(a)) :查找在有序列表 a 中插入 x 的index。lo 和 hi 用于指定列表的区间,默认是使用整个列表。如果 x 已经存在,在其左边插入。返回值为 index。bisect.bisect_right(a,x, lo=0, hi=len(a))bisect.bisect(a, x,lo=0, hi=len(a)) :这2个函数和 bisect_left 类似,但如果 x 已经存在,在其右边插入。原创 2022-07-14 11:57:10 · 466 阅读 · 2 评论 -
Python is 和 =
Python 中 is, is not, ==, !=如果判断是否为 None, 一般使用 is 或 not is如果比较值,一般使用 == 或 !=原创 2022-07-02 14:20:28 · 276 阅读 · 0 评论 -
python float(‘inf‘) 和 float(‘-inf‘)
常用作比较。例如,在遍历树时计算路径路由的开销。在选项列表中找到“开销最低”的路径:如果你没有 float(‘Inf’) 可用,你会使用什么值作为初始lowest_path_cost?当然随机设定一些值也是可以的,float(‘Inf’) 消除了这种不确定性。相反 float(‘-Inf’) 也是一样的这里不在举例。...原创 2022-06-30 13:06:18 · 925 阅读 · 0 评论 -
Python 中 list 和 deque 性能对比
list 与 deque 的性能对比如下,deque 比 list 快了将近一倍。deque 的 appendleft() 和 popleft() 的时间复杂度为 O(1)list 的 insert(0, value) 和 pop() 的时间复杂度为 O(n)列表追加性能好坏不定,因为它使用了realloc()。因此,往往在简单代码中列表的性能不算太差(因为 realloc 内存分配机制不需要移动数据),而在实际应用代码中计时非常慢(因为 realloc 机制会移动所有数据)。相比之下,deque原创 2022-06-29 11:08:53 · 912 阅读 · 0 评论 -
设计模式工厂模式(Factory Method)— Python
工厂方法是设计模式中,创建设计模式的一种设计方式。它允许接口或类创建对象,但让子类决定要实例化哪个类或对象。工厂方法提供了一种更好的方式,创建对象(不需要更改客户端的代码逻辑)。看一个语言翻译模型创建类的例子。看一下不使用工厂模式的代码:使用工厂模式的代码:如果想要添加更多的语言版本模块,只需要添加对应的类。然后在工厂模式中添加对应类的字典索引,即可完成,这个过程不需要改变客户端的代码。优点:...原创 2022-06-28 14:06:14 · 209 阅读 · 0 评论 -
python 模块与包
任何python文件都是模块。import 可以将 python 文件从一个模块导入另外一个模块。2.包包是管理模块的组织方法,对于大型文件结构,需要采取一定的格式。将__init__.py文件添加到目录,一般是空的。这个文件的主要目的是将模块拼接在一起。这时我们的导入包的方式就发生了变化,如下两种方式:注意:所有的导入都是绝对的,而不是相对的。3. 虚拟环境开发中,往往python 项目与项目作用不同,所以项目之间的依赖也往往不同。虚拟环境是管理 python 包第三方依赖的一种好方法。原创 2022-06-10 15:01:05 · 81 阅读 · 0 评论 -
python Logging
logging 模块是 python 的日志记录模块,是用于记录诊断信息的标准库模块。logging是高度可配置的,我们可以调整它的各个方面:输出文件、级别、消息格式等。日志记录用来记录异常捕获,供用户后期选择处理异常或者忽略异常。创建 logger 对象。日志消息等级。它们都创建了格式化的日志消息args与 %一起使用以创建消息。Logging 配置。一个完整的例子:......原创 2022-06-09 10:30:30 · 116 阅读 · 0 评论 -
python 测试,调试
Python 是一门动态编程语言,所以在运行之前,没有编译器来帮助我们发现程序的 Bug。运行代码是测试 Python 程序唯一能做的。assert语句是程序的内部检查。如果表达式不正确,则会引发AssertionError异常。例如:它的目的更多是用于内部检查和不变量(应该始终为真的条件),不应该用于检查用户输入(即,在网络表单或其他东西上输入的数据)。Contract Programming 是自由使用断言的一种设计软件方法,它规定软件设计者应该为软件的组件定义精确的接口规范。例如,对函数所有输入进原创 2022-06-09 10:04:28 · 369 阅读 · 0 评论 -
python 高级语法
介绍下 python 中常见的 *args 和 **kwargs 可变参数。一个函数接受任意数量的参数,称为使用可变参数,例如:1.2 关键字变量参数(**kwargs)一个函数也可以接受任意数量的关键字参数。例如:1.3 结合两者函数还可以接受任意数量的变量关键字和非关键字参数。1.4 扩展可变参数元组扩展可变参数字典扩展可变参数2. 回调函数与匿名函数sort()的列表排序sort()的字典排序匿名函数 LambdaLambda 允许直接在调用中定义一个特殊的处理函数。使用匿名函数原创 2022-06-08 10:36:44 · 904 阅读 · 0 评论 -
python 生成器
如下,调用__iter__()建立迭代器对象并调用__next__()方法迭代元素。常用的 for-loop 迭代使用了底层的迭代协议。生成器是使用 yield 定义迭代的任意函数。调用生成器会建立一个生成器对象,并不会马上输出结果。生成器使用__next__() 迭代输出。yield产生一个值,但暂停函数执行,该函数恢复执行在下一次调用__next__()时。生成器函数实现了与for语句在列表、元组、字典、文件等使用中,相同的低级迭代协议。列表推导式的生成器版本。与列表推导式的区别:不可重复使用原创 2022-06-07 09:57:55 · 192 阅读 · 0 评论 -
Python 对象的内部工作原理
Python 的对象系统是基于字典的实现。字典是 Python 中最常使用的数据结构,也是最重要的数据类型。在一个模块(Python 文件中),字典储存所有的全局变量和函数。输入以下指令可以查看储存当前文件变量或者类属性的字典。1.1 类中的对象管理Python 中的对象系统是在字典上的一个额外层。假设有一个股票类,其属性值为 name, shares, price实例一个对象,并查看储存类属性的字典:由于实例对象被分配在类的self 中,还可以以下方式查看。类字典每一个实例对象的属性,储存在自己原创 2022-06-06 11:45:46 · 175 阅读 · 0 评论 -
python 类
类是对象的集合。一个对象包括:类是对对象实例执行各种操作的函数。实例实例是在程序中操作的实际对象。通过将类作为函数调用来创建的,类语句只是定义,类似于函数的定义。每个实例都有自己的数据, 由 init() 提供。实例方法实例方法是应用于对象实例的函数。python 中对象本身总是作为第一个参数传递。类范围类中的方法没有定义范围。如果想引用它,使用 self.继承继承用于组织相关对象。继承用于扩展现有对象:当子类继承基类之后,可以使用基类方法。添加新方法。重新定义现有方法。Ove原创 2022-06-02 11:19:53 · 410 阅读 · 0 评论 -
python 对象
python 赋值操作只是引用副本。在以下例子中只有一个对象 [1,2,3],但有四个引用。在内存中的操作图片这意味着修改值会影响所有引用。重新分配重新分配一个值永远不会覆盖前一个值使用的内存。变量是名称,而不是内存位置。这是原始数据类型(int、float、string)不可变(只读)的原因之一。is比较对象标识(整数),也就是比较内存地址。可以使用 获得身份id()。“ == ” 只比较值。类型检查判断对象是否为特定类型。检查可能的类型之一。不要过度检查类型,它可能导致代码过原创 2022-06-02 10:28:12 · 91 阅读 · 0 评论 -
python collections 模块
将以下相似的两个元素合并到一起。使用 Counters,将键 IBM的 shares 值合并对total_shares 生成的字典值进行排名,使用 most_common()defaultdict 一对多映射使用 defaultdict 将同一键的 shares 和 price 合并成元组。deque 双端队列类似列表(list)的容器,实现了在两端快速添加(append)和弹出(pop)。原创 2022-06-02 09:50:33 · 87 阅读 · 0 评论 -
python 序列
Python 具有三种序列数据类型。所有序列都是有序的,由整数索引,并有一个长度。序列可以复制。可以连接相同类型的序列。切片索引start和end必须是整数。切片范围左闭右开。如果省略索引,则它们默认为列表的开头或结尾。切片重新分配在列表中,可以重新分配和删除切片。序列缩减有一些常用函数可以将序列减少为单个值。for循环与枚举序列可以使用 for 循环遍历输出每个元素, 这里不再展示遍历列表和字符串的方法,看一下元组。可以使用多个迭代变量进行迭代。enumerate函数将一个额外的计数原创 2022-06-02 09:38:42 · 270 阅读 · 0 评论 -
python 容器(元组,字典和集合)
判断元组最直接的方法:看元素之间是否用逗号隔开。元组通常用于表示简单的记录或结构。通常,元组用来储存单个对象,将相关项目打包成一个实体,如下代码所示。元组就像数据库表中的单行。元组和字符串一样不支持修改但是可以基于当前元组创建一个新元组。可以将元组解压成变量,但左右变量的数量要一致。元组与列表的区别元组最常用于由多个不同类型组成的单个实例。列表通常是不同项目的集合,通常都是同一类型。字典字典是键到值的映射。它有时也称为哈希表或关联数组。键用作访问值的索引。字典的常用操作从字典中获取值原创 2022-06-01 14:50:41 · 131 阅读 · 0 评论 -
python 模块与命令行
python的模块与命令行原创 2022-06-01 11:32:45 · 460 阅读 · 0 评论 -
python 列表
列表操作原创 2022-06-01 10:37:22 · 73 阅读 · 0 评论 -
python 异常捕获
python 异常捕获try-except 语句内置异常捕获多个错误捕获所有异常finallywithtry-except 语句python 中捕获异常的方式。要处理异常,要将语句放入except块中。try: passexcept RuntimeError as e: # e 为异常类型的一个实例 print(e)手动引发异常。raise RuntimeError('这是一个异常')内置异常常见的内置异常。ArithmeticErrorAssertionError原创 2022-05-31 14:34:52 · 671 阅读 · 0 评论 -
python 函数
python 函数1.函数的定义2.函数的注释3.函数的调用4. 函数的变量范围5. 函数的参数传递1.函数的定义函数是将单个任务相关的所有代码放在一起,简化了代码的重复操作。def square(x): return x*xa = 10b = 12 # 使用之前先定义a_output = square(a) #函数使用之前也是先定义b_output = square(b)任何Python 语句都可以在函数里面使用。def foo(): import math原创 2022-05-31 10:51:17 · 129 阅读 · 0 评论 -
python 文件操作
python 文件操作文件的输入和输出with 打开方式读取文件的常见方式写入文件的常用方式文件的输入和输出f = open('foo.txt', 'rt') # Open for reading (text)g = open('bar.txt', 'wt') # Open for writing (text)读取数据。f.read()写入数据g.write('some text')文件关闭f.close()g.close()with 打开方式使用with 关原创 2022-05-31 09:49:41 · 100 阅读 · 0 评论 -
python 字符串 String
python 字符串 String1.python 字符串字符串转义码字符串索引字符串操作字符串方法字符串转换原始字符串f-String2.字节串(Byte String)1.python 字符串首先,字符串是“不可变的”或只读的,创建后,字符串是不可修改的。python 字符串由三种表达形式。# Single quotea = '你好'# Double quoteb = "你好"# Triple quotesc = '''你好,世界。'''三引号通常捕获多行文本及所有格式。原创 2022-05-30 22:19:48 · 251 阅读 · 0 评论 -
python 数字类型与操作符
python 数字类型与操作符Python 数字类型1. Booleans1.1 常见搭配表达符2. Integers(int)2.1 常见操作符3. Floating point3.1 常见操作符4. math 模块5. 比较符6. 类型转换Python 数字类型Python 有4种数组类型:Booleans (布尔)Integers (整数)Floating point (浮点数)Complex (Imaginary numbers) (复数和虚数)1. Booleansa = Tr原创 2022-05-30 21:58:29 · 81 阅读 · 0 评论 -
python中使用数字与字符串的技巧
在 Python 里有三种数值类型:整型(int)、浮点型(float)和复数(complex)。但我们应该怎么合理的使用它们呢?python中使用数字与字符串的技巧1. 少使用数字字面量2. 裸字符串处理的问题3. 展开复杂的计算字面量表达式实用技巧1. 布尔值也是数字2. 改善字符串的可读性。对于多级缩进字符串大数字也可以变得更加可阅读3. 以 r 开头的内建字符串函数。4. float (" inf ")常见误区1. “value += 1” 并非线程安全2. 字符串拼接并不慢Reference原创 2022-03-17 21:23:45 · 1104 阅读 · 0 评论 -
规范使用 python 中的条件判断语句
编写条件分支代码的技巧。规范使用 python 中的条件判断语句1. 避免多层分支嵌套2. 封装过于复杂的逻辑判断3. 不同分支下的重复代码4. 合理使用三元表达式常见技巧。1.德摩根定律2.自定义类的魔法方法3. 在条件判断中使用 all() / any()4. 使用 try/while/for 中 else 分支常见陷阱1. 与 None 值得比较2. and 和 or 的运算优先级Reference1. 避免多层分支嵌套Python中利用缩进来替代 { }。如果多个 if 嵌套, 堪称 ” 嵌原创 2022-03-16 21:06:01 · 1034 阅读 · 0 评论 -
python中的变量命名规则
There are only two hard things in Computer Science: cache invalidation and naming things.在计算机科学领域只有两件难事:缓存失效 和 给东西起名字变量用的好或不好,和代码质量有着非常重要的联系,合理的使用变量,可以让你的代码可读性更高并且更加简洁。python中的变量命名规则1.变量命名2. 变量命名的描述性3.变量名尽量短,但是不要太短4.合理使用变量5. 变量定义尽量靠近使用6. 合理使用namedtuple/原创 2022-03-12 14:27:36 · 53160 阅读 · 0 评论