人工智能
Python
码农阳神
Diligence is like the seedling that springs up in spring, but it does not increase and grows day by day.
展开
-
06-输出
目标格式化输出格式化符号f-字符串print的结束符输出作用:程序输出内容给用户print('hello Python')age = 18print(age)# 需求:输出“今年我的年龄是18岁”一. 格式化输出所谓的格式化输出即按照一定的格式输出内容。1.1 格式化符号格式符号转换%s字符串%d有符号的十进制整数%f浮点数%c字符%u无符号十进制整数%o八进制整数%x十六进制整数(小写ox)原创 2020-09-06 16:10:54 · 196 阅读 · 0 评论 -
05-变量
目标变量的作用定义变量认识数据类型一. 变量的作用举例体验:我们去图书馆读书,怎么样快速找到自己想要的书籍呢?是不是管理员提前将书放到固定位置,并把这个位置进行了编号,我们只需要在图书馆中按照这个编号查找指定的位置就能找到想要的书籍。这个编号其实就是把书籍存放的书架位置起了一个名字,方便后期查找和使用。程序中,数据都是临时存储在内存中,为了更快速的查找或使用这个数据,通常我们把这个数据在内存中存储之后定义一个名称,这个名称就是变量。变量就是一个存储数据的的时候当前数据所在的内存地址原创 2020-09-06 14:58:57 · 167 阅读 · 0 评论 -
04-注释
目标注释的作用注释的分类及语法注释的特点一. 注释的作用没有注释的代码添加注释的代码通过用自己熟悉的语言,在程序中对某些代码进行标注说明,这就是注释的作用,能够大大增强程序的可读性。二. 注释的分类及语法注释分为两类:单行注释 和 多行注释。单行注释只能注释一行内容,语法如下:# 注释内容多行注释可以注释多行内容,一般用在注释一段代码的情况, 语法如下:""" 第一行注释 第二行注释 第三行注释"""''' 注释1 注释2 注原创 2020-09-06 14:57:19 · 154 阅读 · 0 评论 -
03-PyCharm
课程:PyCharm课程目标PyCharm的作用下载安装PyCharmPyCharm的基本使用PyCharm的基本设置一. PyCharm的作用PyCharm是一种Python IDE(集成开发环境),带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,内部集成的功能如下:Project管理智能提示语法高亮代码跳转调试代码解释代码(解释器)框架和库…PythonCharm分为专业版(professional)和社区版(community),本视频以社原创 2020-09-06 14:55:04 · 248 阅读 · 0 评论 -
02-Python解释器
目标解释器的作用下载Python解释器安装Python解释器一. 解释器的作用Python解释器作用:运行文件Python解释器种类CPython,C语言开发的解释器[官方],应用广泛的解释器。IPython,基于CPython的一种交互式解释器。其他解释器PyPy,基于Python语言开发的解释器。Jython,运行在Java平台的解释器,直接把Python代码编译成Java字节码执行。IronPython,运行在微软.Net平台上的Python解释器,可以直接把Pyth原创 2020-09-06 14:51:39 · 239 阅读 · 0 评论 -
01-Python简介
目标了解PythonPython的应用领域Python的版本Python介绍Python是时下最流行、最火爆的编程语言之一,具体原因如下:简单、易学,适应人群广泛免费、开源应用领域广泛以下知名框架均是Python语言开发。Google开源机器学习框架:TensorFlow开源社区主推学习框架:Scikit-learn百度开源深度学习框架:PaddlePython发展历史:https://baike.baidu.com/item/Python/407原创 2020-09-06 14:49:59 · 129 阅读 · 0 评论 -
Python字典排序
你想创建一个字典,并且在迭代或序列化这个字典的时候能够控制元素的顺序。为了能控制一个字典中元素的顺序,你可以使用 collections 模块中的 OrderedDict 类。在迭代操作的时候它会保持元素被插入时的顺序,示例如下:from collections import OrderedDictd = OrderedDict()d['foo'] = 1d['bar'] = 2d['s...原创 2020-02-18 14:22:48 · 203 阅读 · 0 评论 -
Python字典中的键映射多个值
实现一个键对应多个值的字典(multidic)一个字典就是一个键对应一个单值的映射。如果你想要一个键映射多个值,那么你就需要将这多个值放到另外的容器中,比如列表或者集合里面。比如,你可以像下面这样构造这样的字典:d = { 'a' : [1, 2, 3], 'b' : [4, 5]}e = { 'a' : {1, 2, 3}, 'b' : {4, 5}}...原创 2020-02-17 22:01:52 · 1384 阅读 · 0 评论 -
Python优先级队列
实现一个按优先级排序的队列在这个队列上面每次 pop 操作总是返回优先级最高的那个元素下面的类利用 heapq 模块实现了一个简单的优先级队列:import heapqclass PriorityQueue: def __init__(self): self._queue = [] self._index = 0 def push(se...原创 2020-02-15 10:20:17 · 328 阅读 · 0 评论 -
Python查找最大或最小的 N 个元素
从一个集合中获得最大或者最小的 N 个元素列表heapq 模块有两个函数:nlargest() 和 nsmallest() 可以完美解决这个问题。import heapqnums = [1, 8, 2, 23, 7, -4, 18, 23, 42, 37, 2]print(heapq.nlargest(3, nums)) # Prints [42, 37, 23]print(heapq....原创 2020-02-14 14:24:12 · 272 阅读 · 0 评论 -
Python保留最后N个元素
保留有限历史记录正是 collections.deque 大显身手的时候。比如,下面的代码在多行上面做简单的文本匹配,并返回匹配所在行的最后N行:from collections import dequedef search(lines, pattern, history=5): previous_lines = deque(maxlen=history) for line i...原创 2020-02-14 14:14:48 · 403 阅读 · 0 评论 -
解压序列赋值
任何的序列(或者是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量。唯一的前提就是变量的数量必须跟序列元素的数量是一样的。代码如下:>>> p = (4, 5)>>> x, y = p>>> x4>>> y5>>>>>> data = [ 'ACME', 50,...原创 2020-02-13 10:07:36 · 158 阅读 · 0 评论 -
精确的浮点数运算
你需要对浮点数执行精确的计算操作,并且不希望有任何小误差的出现。浮点数的一个普遍问题是它们并不能精确的表示十进制数。并且,即使是最简单的数学运算也会产生小的误差,比如:a = 3.2b = 5.4print(a + b)print((a + b) == 8.6)运行结果如下:8.600000000000001False这些错误是由底层CPU和IEEE 754标准通过自己的浮点单位去...原创 2020-02-13 09:38:02 · 1023 阅读 · 0 评论 -
Python中的locals 和 globals
这两个函数主要提供,基于字典的访问局部和全局变量的方式。在理解这两个函数时,首先来理解一下 Python 中的名字空间概念。Python 使用叫做名字空间的东西来记录变量的轨迹。名字空间只是一个字典,它的键字就是变量名,字典的值就是那些变量的值。实际上,名字空间可以像 Python 的字典一样进行访问。每个函数都有着自已的名字空间,叫做局部名字空间,它记录了函数的变量,包括函数的参数和局部定...原创 2020-02-12 10:34:53 · 653 阅读 · 0 评论 -
Python 动态变量名定义与调用
动态变量名赋值在使用 tkinter 时需要动态生成变量,如动态生成 var1…var10 变量。使用 exec 动态赋值exec 在 python3 中是内置函数,它支持 python 代码的动态执行。for i in range(6): exec('var{} = {}'.format(i,i))print(var0,var1,var2,var3,var4,var5)运行结果...原创 2020-02-12 09:50:07 · 397 阅读 · 0 评论 -
GIL(全局解释器锁)
描述Python GIL的概念, 以及它对python多线程的影响?编写一个多线程抓取网页的程序,并阐明多线程抓取程序是否可比单线程性能有提升,并解释原因。Python语言和GIL没有半毛钱关系。仅仅是由于历史原因在Cpython虚拟机(解释器),难以移除GIL。GIL:全局解释器锁。每个线程在执行的过程都需要先获取GIL,保证同一时刻只有一个线程可以执行代码。线程释放GIL锁的情况: 在...原创 2020-02-10 16:34:25 · 100 阅读 · 0 评论 -
Matplotlib-1
Matplotlib 是一个Python的 2D绘图库。通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。通过学习Matplotlib,可让数据可视化,更直观的真实给用户。使数据更加客观、更具有说服力。 Matplotlib是Python的库,又是开发中常用的库。绘制基础在使用Matplotlib绘制图形时,其中有两个最为常用的场景...原创 2020-02-10 16:24:09 · 366 阅读 · 0 评论 -
NumPy Matplotlib结合
import numpy as npimport matplotlib.pyplot as plt # 导入matplotlib模块,用于图表辅助分析# 导入模块# 随机数生成samples = np.random.normal(size=(4,4))print(samples)# 生成一个标准正太分布的4*4样本值# numpy.random.rand(d0, d1, ......原创 2020-02-09 22:48:09 · 201 阅读 · 0 评论 -
NumPy IO
Numpy 可以读写磁盘上的文本数据或二进制数据。NumPy 为 ndarray 对象引入了一个简单的文件格式:npy。npy 文件用于存储重建 ndarray 所需的数据、图形、dtype 和其他信息。常用的 IO 函数有:load() 和 save() 函数是读写文件数组数据的两个主要函数,默认情况下,数组是以未压缩的原始二进制格式保存在扩展名为 .npy的文件中。savze()...原创 2020-02-09 22:35:18 · 164 阅读 · 0 评论 -
NumPy 线性代数
NumPy 提供了线性代数函数库 linalg,该库包含了线性代数所需的所有功能,可以看看下面的说明:函数描述dot两个数组的点积,即元素对应相乘。vdot两个向量的点积inner两个数组的内积matmul两个数组的矩阵积determinant数组的行列式solve求解线性矩阵方程inv计算矩阵的乘法逆矩阵numpy....原创 2020-02-09 22:27:18 · 183 阅读 · 0 评论 -
NumPy总结
NumPy 排序、条件刷选函数NumPy 提供了多种排序的方法。 这些排序函数实现不同的排序算法,每个排序算法的特征在于执行速度,最坏情况性能,所需的工作空间和算法的稳定性。 下表显示了三种排序算法的比较。种类速度最坏情况工作空间稳定性‘quicksort’(快速排序)1O(n^2)0否‘mergesort’ (归并排序)2O(n*log(n))~...原创 2020-02-09 22:17:03 · 222 阅读 · 0 评论 -
NumPy函数
NumPy 字符串函数以下函数用于对 dtype 为 numpy.string_ 或 numpy.unicode_ 的数组执行向量化字符串操作。 它们基于 Python 内置库中的标准字符串函数。这些函数在字符数组类(numpy.char)中定义。函数描述add()对两个数组的逐个字符串元素进行连接multiply()返回按元素多重连接后的字符串cente...原创 2020-02-09 21:34:16 · 503 阅读 · 0 评论 -
NumPy 位运算
NumPy “bitwise_” 开头的函数是位运算函数。NumPy 位运算包括以下几个函数:函数描述bitwise_and对数组元素执行位与操作bitwise_or对数组元素执行位或操作invert按位取反left_shift向左移动二进制表示的位right_shift向右移动二进制表示的位import numpy as np ...原创 2020-02-09 21:16:07 · 134 阅读 · 0 评论 -
Numpy 数组操作
修改数组形状函数描述reshape不改变数据的条件下修改形状flat数组元素迭代器flatten返回一份数组拷贝,对拷贝所做的修改不会影响原始数组ravel返回展开数组numpy.reshapenumpy.reshape 函数可以在不改变数据的条件下修改形状,格式如下:numpy.reshape(arr, newshape, order=‘...原创 2020-02-09 20:56:25 · 431 阅读 · 0 评论 -
NumPy 迭代数组
NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式。迭代器最基本的任务的可以完成对数组元素的访问。import numpy as np a = np.arange(6).reshape(2,3)print ('原始数组是:')print (a)print ('\n')print ('迭代输出元素:')for x in np.ndite...原创 2020-02-09 20:14:09 · 255 阅读 · 0 评论 -
NumPy 广播(Broadcast)
广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的算术运算通常在相应的元素上进行。如果两个数组 a 和 b 形状相同,即满足 a.shape == b.shape,那么 a*b 的结果就是 a 与 b 数组对应位相乘。这要求维数相同,且各维度的长度相同。import numpy as np a = np.array([1,2,3,4])...原创 2020-02-09 20:01:59 · 212 阅读 · 0 评论 -
数组的拼接
水平数组组合通过 hstack 函数可以将两个或多个数组水平组合起来形成一个数组,那么什么叫做数组 的水平组合。现在有两个 2*3 的数组 A 和 B。数组 A0 1 2 3 4 5 数组 B6 7 8 9 10 11使用 hstack 函数将两个数组水平组合的代码如下: hstack(A,B)返回的结果: 0 1 2 6 7 8 3 4 5 9 10 11 可以看到,数...原创 2020-02-09 19:54:03 · 4426 阅读 · 0 评论 -
numpy的切片和索引
ndarray 对象的内容可以通过索引或切片来访问和修改,与 Python 中 list 的切片操作 一样。ndarray 数组可以基于 0 - n 的下标进行索引,并设置 start, stop 及 step 参数进行,从 原数组中切割出一个新数组。一维数组切片和索引的使用import numpy as npx = np.arange(10)y = x[2:7:2]z = x[2:]...原创 2020-02-09 17:33:11 · 335 阅读 · 0 评论 -
细说python中的round()方法
本篇文章,想聊一下Python中的round()方法。这时候,有人就会说,round()方法嘛!简单!round() 方法就是返回浮点数x的四舍五入值。你看下面这些例子:round(100.123,1)round(-100.1)round(80.23456,3)round(1.75,1)上面的运行结果:100.1-10080.2351.8一切正常,返回浮点数的四舍五入呀。...转载 2020-02-09 17:10:56 · 2583 阅读 · 0 评论 -
Numpy数组的创建
NumPy(Numerical Python) 是科学计算基础库,提供大量科学计算相关功能,比如数据 统计,随机数生成等。其提供最核心类型为多维数组类型(ndarray),支持大量的维度数组 与矩阵运算,Numpy 支持向量处理 ndarray 对象,提高程序运算速度。数组的创建array 创建 numpy 模块的 array 函数可以生成多维数组。例如,如果要生成一个二维数组,需要向 arr...原创 2020-02-09 15:47:20 · 1514 阅读 · 0 评论 -
数据库编程
操作SQLite3数据库从Python3.x版本开始,在标准库中已经内置了SQLlite3模块,它可以支持SQLite3数据库的访问和相关的数据库操作。在需要操作SQLite3数据库数据时,只须在程序中导入SQLite3模块即可。Python语言操作SQLite3数据库的基本流程如下所示。(1) 导入相关库或模块(SQLite3)。(2) 使用connect()连接数据库并获取数据库连接对象...原创 2020-02-09 13:55:35 · 266 阅读 · 0 评论 -
Python 的GUI
常用的 GUI 库Tkinter tkinter(Tk interface)是 Python 的标准 GUI 库,支持跨 平台的 GUI 程序开发。tkinter 适合小型的 GUI 程序编写, 也特别适合初学者学习 GUI 编程。wxPython wxPython是比较流行的GUI库,适合大型应用程序开发, 功能强于 tkinter,整体设计框架类似于 MFC(Microsoft Foun...原创 2020-02-09 13:15:25 · 1272 阅读 · 0 评论 -
模块
1. 模块化(module)程序设计理念1.1 模块和包概念的进化史“量变引起质变”是哲学中一个重要的理论。量变为什么会引起质变呢?本质上理解, 随着数量的增加,管理方式会发生本质的变化;旧的管理方式完全不适合,必须采用新的管 理方式。程序越来越复杂,语句多了,怎么管理?很自然的,我们会将实现同一个功能的语句封 装到函数中,统一管理和调用,于是函数诞生了。 程序更加复杂,函数和变量多了,怎么管...原创 2020-02-09 10:16:17 · 583 阅读 · 0 评论 -
文件操作(IO 技术)
一个完整的程序一般都包括数据的存储和读取;我们在前面写的程序数据都没有进行实 际的存储,因此 python 解释器执行完数据就消失了。实际开发中,我们经常需要从外部存 储介质(硬盘、光盘、U 盘等)读取数据,或者将程序产生的数据存储到文件中,实现“持 久化”保存。按文件中数据组织形式,我们把文件分为文本文件和二进制文件两大类。1. 文本文件文本文件存储的是普通“字符”文本,python 默认...原创 2020-02-08 22:14:27 · 318 阅读 · 0 评论 -
异常
异常机制本质异常指程序运行过程中出现的非正常现象,例如用户输入错误、除数为零、需 要处理的文件不存在、数组下标越界等。 所谓异常处理,就是指程序在出现问题时依然可以正确的执行剩余的程序,而 不会因为异常而终止程序执行。python 中,引进了很多用来描述和处理异常的类,称为异常类。异常类定义中 包含了该类异常的信息和对异常进行处理的方法。下面较为完整的展示了 python 中内建异常类的继承层...原创 2020-02-08 20:11:44 · 191 阅读 · 0 评论 -
面向对象进阶
继承继承是面向对象程序设计的重要特征,也是实现“代码复用”的重要手段。 如果一个新类继承自一个设计好的类,就直接具备了已有类的特征,就大大降低了工作 难度。已有的类,我们称为“父类或者基类”,新的类,我们称为“子类或者派生类”。语法格式Python 支持多重继承,一个子类可以继承多个父类。继承的语法格式如下: class 子类类名(父类 1[,父类 2,...]): 类体 如果在...原创 2020-02-08 19:31:38 · 380 阅读 · 0 评论 -
面向对象
面向对象(Object oriented Programming,OOP)编程的思想主要是针对大型 软件设计而来的。面向对象编程使程序的扩展性更强、可读性更好,使的编程可以像搭 积木一样简单。面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式 更加接近人的思维,从而大大提高了编程的效率。Python 完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向 对象的...原创 2020-02-08 18:50:43 · 227 阅读 · 0 评论 -
函数用法和底层分析
函数是可重用的程序代码块。函数的作用,不仅可以实现代码的复用,更能实现代码的 一致性。一致性指的是,只要修改函数的代码,则所有调用该函数的地方都能得到体现。 在编写函数时,函数体中的代码写法和我们前面讲述的基本一致,只是对代码实现了封 装,并增加了函数调用、传递参数、返回计算结果等内容。函数简介函数的基本概念一个程序由一个个任务组成;函数就是代表一个任务或者一个功能。函数是代码复用的通用...原创 2020-02-08 17:06:55 · 291 阅读 · 0 评论 -
控制语句
条件控制选择结构 选择结构通过判断条件是否成立,来决定执行哪个分支。选择结构有多种形式,分为:单分 支、双分支、多分支。单分支选择结构 if 语句单分支结构的语法形式如下:if 条件表达式: 语句/语句块 其中:1 .条件表达式:可以是逻辑表达式、关系表达式、算术表达式等等。2 .语句/语句块:可以是一条语句,也可以是多条语句。多条语句,缩进必须对齐一致。条件表达式详解在选择和循...原创 2020-02-08 15:03:11 · 142 阅读 · 0 评论 -
集合
集合(set)是一个无序的不重复元素序列。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。创建格式:parame = {value01,value02,...}或者set(value)下面为集合常用的方法:方法描述add()为集合添加元素clear()移除...原创 2020-02-08 14:24:58 · 134 阅读 · 0 评论