- 第一阶段:年“计算机系统结构阶段”。
- 第二阶段:年“计算机网络和视窗阶段”。
- 第三階段:2008年至今“复杂信息系统阶段”。
- 第四阶段:月20年后某个时期开始“人工智能阶段”。
1.2.1程序设计语言概述
机器语言和汇编语言都直接操作计算机硬件并基于此设计统称“低级语言”。
- 高级语言:用更接近自然语言的方式描述计算问题代码只与编程语言有关,与计算机结构无关
高级语言按执行方式可分为采用编译執行的静态语言和采用解释执行的脚本语言。
- 编译是将源代码转换成目标代码的过程
- 解释是将源代码逐条转换成目标代码同时逐条运行目标代码的过程。
- 通过编程实现自动化提高效率。
- 通过编程了解一个新的广阔世界
python有什么用语言是一个语法简洁、跨平台、可扩展的开源通用脚本语言。
- 2008年12月python有什么用 3.0正式发布,解释器内部采用完全面向对潒的方式实现代价是3.x系列版本无法向下兼容2.x系列的既有语法。
- 强制可读:通过强制缩进体现语句间的逻辑关系提高了程序的可读性
- 模式哆样:语法层面同时支持面向过程和面向对象两种编程方式
- 粘性扩展:通过接口和函数集成其他语言编写的代码
1.5 程序的基本编写方法
每个程序都有统一的运算模式:输入数据、处理数据和输出数据这种朴素的运算模式形成了基本的程序编写方法:IPO(Input,Process,Output)方法。
IPO不仅是程序设计嘚基本方法也是描述计算问题的方式。
1.5.2理解问题的计算部分
python有什么用程序包括格式框架、注释、变量、表达式、分支语句、循环语句、函数等语法元素
- 命名是为变量关联标识符的过程,用于确保程序元素的唯一性
- 标识符由字母、数字、下划线(和汉字)等字符及其组合构成
- 标识符嘚首字符不能是数字 且中间不能出现空格
- 保留字(Keyword)也被称为关键字,是被编程语言内部定义并保留使用的标识符
- python有什么用 的标准库提供了一个 keyword 模块可以输出当前版本的所有关键字:
- 字符串(string)类型在程序中表示文本
- 字符串是字符的序列,可以按照单个字符或字符片段進行索引
- 字符串包括两种序号体系:正向递增序号、反向递减序号
- 正向递增序号:0~L-1
- 反向递减序号:-L~-1
- 区间访问方式:[N:M](不包含M)可以混匼使用正向递增序号和反向递减序号
- 字符串比较本质上是字符串对应Unicode编码的比较
- python有什么用语言中,“=”表示“赋值”将右侧的计算结果賦给左侧变量
- 同步赋值语句:可同时给多个变量赋值
- 循环语句的作用是根据判断条件确萣一段程序是否再执行一次或多次
- 使用input()函数从控制台获得用户输入
- input()函数以字符串类型返回结果
- eval(<字符串>)函数的作用是间输入的字符串变成python有什么用语句并执行
python有什么用语法允许在表达式内部标记之间增加空格,适当增加空格有助于提高代码可读性但应注意,不能改变与缩进楿关的空格数量、不能再变量名等命名中间增加空格
- print()函数可以输出字符信息,也可以用字符的形式输出变量
- 输出字符信息时可以直接將待输出内容传递给print()函数
- 输出变量值时,print()函数用槽格式和过format()方法将变量和字符串结合到一起输出
- 函数可以理解为对一组表达特定功能表达式的封装将特定功能代码编写在一个函数里,使程序模块化更好便于阅读和复用
- 可通过保留字def自定义函数
2.2 对象(库)的调用
面向对象編程是一种基于对象的编程范式。对象是事物的一种抽象是一个实体,包含属性和方法两部分属性是对象中的变量,方法是对象能完荿的操作
- import <库名>:程序调用库中所有函数,使用库中函数格式如下
tuetle库是┅个图形绘制函数图
- tuetle库绘制图形的基本框架是一个海龟在坐标系中爬行(前进、后退、左转、右转),其轨迹形成了绘制图形
- 初始位置位于坐标(0,0),行进方向为水平右方
- 使用turtle.setup()函数设置主窗体的大小和位置。
- width,height分别表示窗口宽度和高度值是整数表示像素值,值时小数表礻与屏幕的比例
- startx,stary分别表示窗口左侧和顶部与屏幕左侧和顶部的像素距离如果值是none,窗口位于屏幕水平/垂直中央
-
turtle.pencolor():设置画笔颜色无参数輸入时返回当前画笔颜色。
-
turtle.seth(to_angle):控制画笔绘制方向(to_angle)参数是绝对方向角度值(turtle库的坐标体系以正东方向为绝对0度、正北方向为绝对90度)
- radius徝为正时,半径在画笔左侧值为负时,半径在画笔右侧;
extent为正时画笔逆时针前进,extent为负时画笔顺时针倒退,extent不设置参数或参数为None时绘制整圆。
- python有什么用语言提供整数、浮点数、复数3种数字类型
- 整数类型共有4种进制表示:十进制、二进制、八进制和十六进制
- 默认情况整数采用十进制其他进制需要增加引导符号
- 浮点数类型与数学中实数的概念一致,表示带有小数的数值
- python有什么用語言要求所有浮点数必须带有小数部分(可以是0)一区分浮点数和证书类型
- 浮点数有2中表示方法:十进制表示和科学计数法表示
科学计數法使用字母e或E作为幂的符号,以10为基数,含义如下:
- 由于计算机内部采用二进制运算浮点数进行超过15位数字计算会产生误差
使用整数表達浮点数的方法是高精确度运算的基本方法之一。
- 对于高精度科学计算外的绝大部分运算而言浮点数类型已足够可靠,一般认为浮点数類型没有范围限制运算结果准确
复数可以看作是二元有序实数对(a,b),表示为a+bj,其中a是实数部分简称实部,b是虚數部分简称虚部。
- python有什么用 语言中复数的虚部通过后缀"j"或"J"表示
- 复数类型中实数部分和虚数部分的数值都是浮点数类型,对于实数z可鼡z.real和z.imag分别获得它的实部和虚部
3.2 数字类型的操作
- python有什么用 解释器为数字类型提供数值运算操作符、数值运算函数、类型转换函数等操作方法
內置的数值运算操作符(共9个)
|
|
|
|
|
x与y之整数商,即不大于x与y之商的最大整数
|
x与y之商的余数也称为模运算
|
|
|
|
- 操作符运算的结果可能会改变数字類型,3种数字类型之间存在一种逐渐扩展的关系:整数→浮点数→复数
- 上述9个二元数学操作符都有与之对应的增强赋值操作符
内置的数值运算函数(共6个)
|
|
(x//y,x%y),输出为二元组形式(也称为元组类型)
|
|
对x四舍五入保留ndigits位小数,round(x)返回四舍五入的整数值
|
|
|
内置的数字类型转换函数(共3个)
|
将x转换为整数x可以是浮点数或字符串
|
将x转换为浮点数,x可以是整数或字符串
|
生荿一个复数实部为re,虚部为imre可以是整数、浮点数或字符串,im可以是整数或浮点数但不能为字符串
|
- int()函数将浮点数类型转换为整数时小數部分会直接被舍弃
- 复数不能直接转换为其他数字类型,可通过.real和.imag将复数的实部和虚部分别转换
3.3 字符串类型及其操作
- 字符串是字符的序列表示
- 单引号字符串:'单引号表示可以使用"双引号"作为字符串的一部分'
- 双引号字符串:"双引号表示可以使用'单引号'作为字符串的一部分"
- 三引號字符串:'''三引号表示可以使用"双引号"、'单引号'作为字符串的一部分
- python有什么用 字符串提供区间访问方式采用[N:M]格式。表示从字符串中从N到M(不包含M)的字符串可以混合使用正向递增序号和反向递减序号
- 反斜杠字符(\)在字符串中表示转义
基本的字符串操作符(共5个)
|
|
|
如果x是s的孓字符串,返回Ture否则返回False
|
|
切片,返回索引第N到第M个字符
|
内置的字符串处理函数(共6个)
|
返回字符串x的长度也可返回其他组合数据类型え素个数
|
返回任意类型x所对应的字符串形式
|
返回Unicode编码x对应的单字符
|
返回单字符表示的Unicode编码
|
返回整数x对应十六进制数的小写形式字符串
|
返回整数x对应八进制数的小写形式字符串
|
内置的字符串处理方法(共43个,常用16个)
- 在python有什么用解释器内部所有数据类型都采用面向对象的方式实现,封装为一个类
- 字符串是一个类具有类似<a>.<b>()形式的字符串处理函数,称为方法
|
返回字符串str的副本全部字符小写
|
返回字符串str的副本,全部字符大写
|
当str所有字符都是小写时返回Ture,否则返回False
|
当str所有字符都是可打印的返回Ture,否则返回False
|
当str所有字符都是数字时返回Ture,否则返回False
|
当str所有字符都是空格返回Ture,否则返回Flase
|
|
|
返回一个列表由str根据sep被分割的部分构成
|
|
返回字符串str的副本,所有old子串被替换为new如果count给出,則前count次old出现被替换
|
|
返回字符串str的副本在其左侧和右侧去掉chars中列出的字符
|
返回字符串str副本,长度为width不足部分在其左侧添加0
|
返回字符串str的┅种排版格式
|
返回一个新字符串,由组合数据类型iterable变量的每个元素组成元素间用str分隔
|
3.4 字符串类型的格式化
字符串格式化用于解决字符串和变量同时输出时的格式安排
- 模板字符串由一系列槽组成,用来控制修改字符串中嵌入值出现的位置(槽鼡{}表示如果{}中没有序号,则按照出现顺序替换)
- 如需输入{}采用{{表示{;}}表示}
- format()方法模板字符串的槽除了包括参数序号,还可包括格式控制信息槽内部样式:{<参数序号>:<格式控制标记>}
- 格式控制标记用于控制参数显示时的格式
|
<左对齐、>右对齐、^居中对齐
|
数字的千位分隔符 适用於整数和浮点数
|
浮点数小数部分的精度或字符串的最大输出长度
|
- <填充>指宽度内除了参数外的字符采用什么方式表示,默认为空格
- <对齐>指参數在宽度内输出时的对齐方式
- <宽度>指当前槽的设定输出字符宽度若实际参数长度比设定值大,则使用参数实际长度
- <,>用于显示数字类型的芉分位分隔符
- <.精度>对于浮点数表示小数部分输出的有效位数;对于字符串,表示输出的最大长度
- <类型>表示输出整数好浮点数类型的格式規划
- c:整数对应的Unicode字符;
- x:整数的小写十六进制
- X:整数的大写十六进制
- e:浮点数对应的小写字母e的指数形式
- E:浮点数对应的大写字母E的指数形式
- f:浮点数的标准浮点形式
4.1 程序的基本结构
- 起止框表示一个程序的开始和结束
- 判断框判断一个条件是否成立,并根据判断结果不同選择不同的执行路径
- 处理框表示一组处理过程
- 输入/输出框表示数据输入或结果输出
- 流向线以带箭头的直线或曲线形式指示程序的执行路径
- 連接点将多个流程图连接到一起
- 程序有3种基本结构组成:顺序结构、分支结构和循环结构
- 顺序结构:程序按照线性顺序依次执行
- 分支结构:程序根据条件判断结果而选择不同向前执行路径的一种运行方式(分支结构包括单分支结构和二分支结构;p97)
- 循环结构:程序根据条件判断结果向后反复执行(根据触发条件不同循环结构包括条件循环和遍历循环)
4.2 程序的分支结构
- 语句块是if条件满足后执行的一个或多个語句序列
- 语句块中语句通过与if所在行形成缩进表达包含关系
- if语句首先评估条件的结果值,若为Ture则执行语句块中的语句序列;若为False则跳过语呴块中的语句
- if语句中条件部分可以使用任何能够产生Ture或False的语句或函数
形成判断条件最常见的方式是采用关系操作符
- python有什么用使用"="表示赋值語句使用"=="表示等于
二分支结构:if-else语句
- 二分支语句用于区分条件的两种可能
- if条件满足时执行语句块1
- if条件不满足时执行语句块2
二分支结构的簡洁表达(适合通过判断返回特定值)
- python有什么用依次评估寻找第一个结果为Ture的条件,执行该條件下的语句并跳过整个if-elif-else结构执行后面的语句
- 如果没有任何条件成立,执行else下面的语句块
4.3 程序的循环结构
- 遍历循环可以理解为从遍历结構中中逐一提取元素放在循环变量中,对于所提取的每个元素执行一次语句块
当for循环正常执行后程序会继续执行else语句
遍历循环:while语句
while語句语法格式
- 当条件判断为Ture时,循环体重复执行语句块中的语句;当条件为Flase时循环终止,执行与while同级别缩进的后续语句
- 当while循环正常执行後程序会继续执行else语句中的内容,else语句只在循环正常执行后才执行
- break用来跳出最内层for或while循环脱离该循环后程序从循环代码后继续执行
- continue用來结束当前当次循环,即跳出循环体中下面尚未执行的语句但不跳出当前循环
- break语句与continue语句的区别是,break语句结束整个循环过程,不再判断执荇循环的条件是否成立;continue语句只结束本次循环而不终止整个循环的执行
for循环和while循环中都有一个else扩展用法。else语句仅在循环正常遍历了所有內容或由于条件不成立而结束循环的条件下执行
random库采用梅森旋转算法生成伪随机数序列,可用于除随机性要求更高的加解密算法外的大哆数工程应用
- python有什么用内置的random库主要用于产生各种分布的伪随机数序列
- random库提供9个常用函数
|
初始化随机数种子默认值为当前系统时间
|
生成┅个[0.0,1.0]之间的随机小数
|
生成一个[a,b]之间的整数
|
生成一个k比特长度的随机整数
|
|
生成一个[a,b]之间的随机小数
|
从序列类型,例如列表中随机返回一个元素
|
将序列类型中的元素随机排列返回打乱后的序列
|
从pop类型中随机选取k个元素,以列表类型返回
|
- 生成随机数之前可通过seed()函数指定随机数种孓随机数种子一般是一个整数,只要种子相同每次生成的随机数序列也相同
4.5 程序的异常处理
- 异常语句还可以与else和finally保留字配合使用
5.1 函数嘚基本使用
- 函数是一段具有特定功能的、可重用的语句组
- 使用函数主要有两个目的:降低编程难度和代码重用
- python有什么用使用def保留字定义一個函数
- 函数名可以是任何有效的python有什么用标识符
- 参数列表是调用该函数是传递给它的值,可以有零个(保留圆括号)、一个或多个(用逗號分隔)
- 函数体是函数每次被调用是执行的代码
- 当需要返回值时使用保留字return和返回值刘表否则函数可以没有return语句,在函数体结束时将控淛权返回给调用者
函数调用和执行的一般形式
- 调用程序在调用处暂停执行
- 在调用时将实参复制给形参
- 函数调用结束给出返回值程序回到調用前的暂停处继续执行
- lambda函数又称匿名函数,将函数名作为函数结果返回
lambda函数与正常函数一样等价于下面表达式:
- lambda函数用于定义简单的、能够在一行内表示的函数,返回一个函数类型
5.2 函数的参数传递
函数可定义可选参数使用参数的位置或名稱传递参数值,根据函数中变量的不同作用域有不同的函数返回值方式
可选参数和可变数量参数
- 函数定义时部分参数可直接为存在默认值嘚参数指定默认值当函数被调用时如果没有传入对应的参数值则使用函数定义时的的默认值替代
- 默认参数必须指向不变对象
- 函数调用时需要按顺序输入参数,可选参数必须定义在非可选参数后
- 函数定义时可设计可变数量参数通过在参数前加星号(*)实现
- 带有星号的可变参数呮能出现在参数列表最后,调用时这些参数被单指元组类型传递到函数中
- 函数定义时实参默认采用按照位置顺序的方式传递给函数这种方式在参数很多的情况下可读性较差
- python有什么用提供了按照形参名称输入实参的方式,调用函数时指定参数名称参数之间的顺序可任意调整
- return语句用来退出函数并将程序返回到函数被调用的位置继续执行
- return语句可同时将0个、1个或多个函数运算后的结果返回给函数被调用的位置
- 函數可以没有return,此时函数不返回值
- 函数也可以用return返回多个值多个值以元组类型保存
python有什么用时间处理的标准函数库datetime提供里一批显示日期和時间的格式化方法。
datetime库可以从系统中获得时间并以用户选择的格式输出
- datetime库以格林威治时间为基础,每天由3600*24秒精准定义
datetime库以类的方式提供哆种日期和时间
- datetime.date:日期表示类坑人表示年、月、日等。
- datetime.time:时间表示类可表示小时、分钟、秒、毫秒等。
- datetime.datetime类的使用方式是首先创建一个datetime對象然后通过对象的方法和属性显示时间
- datetime.now():返回一个datetime类型,表示当前日期和时间精确到毫秒
- datetime.utcnow():返回一个datetime类型,表示当前日期和时间的UTC(世界标准时间)表示精确到毫秒
-创建datetime对象后,可利用该对象的属性显示时间
(以上述“some”为例)
|
|
|
返回some包含的年份
|
返回some包含的月份
|
返回some包含的日期
|
返回some包含的小时
|
返回some包含的分钟
|
返回some包含的秒钟
|
返回some包含的毫秒
|
|
采用ISO8601标准显示时间
|
|
根据格式化字符串format進行格式显示的方法
|
5.5 代码复用和模块化设计
- 当代编程语言从代码层面采用函数和对象两种抽象方式分别对应媔向过程和面向对象两种编程思想
- 函数是程序的一种基本抽象方式,它将一系列代码组织起来通过命名提供其他程序使用任何其他代码呮有输入参数即可调用函数,更新函数功能时所有被调用处的功能都被更新。
- 对象是程序的一中高级抽象方式它将程序代码组织为更高级的类。对象包括表征对象特征的属性和代表对象操作的方法
- 模块化设计值通过函数或对象的封装功能将程序划分成主程序、子程序囷子程序间关系的表达。
- 模块化设计的两个基本要求:
- 紧耦合:尽可能合理划分功能块功能块内部耦合紧密
- 松耦合:模块间关系尽可能簡单,功能块之间耦合度低
递归的定义:函数定义中调用函数自身的方式称为递归
- 存在一个或多个基例基例鈈需要再次递归,是确定的表达式
- 所有递归链要以一个或多个基例结尾
科赫曲线属于汾形几何分支,它的绘制过程体现了递归思想
6.1 组合数据类型概述
组合数据类型为多个类型或不同类型数据提供单一表示使数据操作更有序、更容易。组合数据类型分为序列类型、集合类型和映射类型3类
序列类型是一维元素向量,元素间存在先后关系通过序号访问,元素之间不排他
- 字符串(str)可以看做是单一字符的有序组合,属于序列类型
- 元组(tuple)是包含零个或多个数据项嘚不可变序列类型
- 一个元组可作另一个元组的元素可采用多级索引获取信息
- python有什么用中元组采用逗号和圆括号(可选)表示
- 列表(list)是包含零个或多个对象引用的有序数列
- 列表的长度和内容都是可变的
- 列表用中括号([])表示,也可通过list()函数将元组或字符串转化成列表
- 列表必须通过显式赋值才能生成简单将一个列表赋值给另一个列表不会生成新的列表对象
序列类型的通用操作符和函数
|
如果x是s的元素,返回True否則返回Flase
|
如果x不是s的元素,返回True否则返回Flase
|
|
|
索引,返回序列s的第i个元素
|
分片返回包含序列s第i到第j(不含)个元素的子序列
|
s[i:j:k]步骤分片,返回包含序列s第i到第j(含)个元素以k为步长的子序列
|
序列s的元素个数(长度)
|
|
|
序列s中从i开始到j位置第一次出现元素x的位置
|
序列s中出现x的总次数
|
集合类型是一个元素集合元素之间无序,相同元素在集合中唯一存在
- 集合的元素类型只能是固定数据类型(能够进行哈希运算的类型嘟可以作为集合元素)
哈希运算可以将任意长度的二进制值映射为较短的固定长度的二进制值,哈希值是对数据的一种有损且紧凑的表示形式是数据在另一个数据维度的体现。
- 集合是无序组合没有索引和位置的概念,不能分片
- 集合不包含重复元素可使用集合类型过滤偅复元素
- 集合中元素可以动态增加或删除
- 集合用大括号({})表示(直接使用大括号生成一个空的字典而不是集合)
- 生成空集合需要使用函數set()
集合类型的操作符(10个)
|
差集:返回一个集合,包括在集合S中但不在集合T中的元素
|
更新集合S包括在集合S中但不在集合T中的元素
|
交集:返回一个新集合,包括同时在集合S和T中的元素
|
更新集合S,包括同时在集合S和T中的元素
|
补集:返回一个新集合包括集合S和T中的元素,但不包括同时在其中的元素
|
更新集合S,包括集合S和T中的元素但不包括同时在其中的元素
|
并集:返回一个新集合,包括集合S和T中的所有元素
|
更新集匼S,包括集合S和T中的所有元素
|
判断S是否是T的真子集
|
判断S是否是T的真超集
|
集合类型的操作函数或方法(10个)
|
如果数据项x不在集合S中将x增加到S
|
|
|
隨机返回集合S中的一个元素,若S为空产生KeyError异常
|
如果x在集合S中,则移除x;若不在也不报错
|
如果x在集合S中则移除x;否则产生KeyError异常
|
如果集合S與T没有相同元素,则返回True
|
|
如果x是S的元素返回True,否则返回False
|
如果x不是S的元素返回True,否则返回False
|
映射类型是“键-值”数据项的组合每个元素昰一个键值对,表示为(key,value)
列表类型特有的函数或方法(14个)
|
替换列表ls第i个数据为x
|
用列表lt替换列表ls中第i到第j(不含)项的数据
|
用列表lt替换列表ls中第i到第j(不含)项以k为步数的数据
|
删除列表ls中第i到第j(不含)项的数据,等价于ls[i:j]=[]
|
删除列表ls中第i到第j(不含)项以k为步数的数据
|
将列表lt嘚元素增加到列表ls中
|
更新ls列表使其元素重复n次
|
在列表ls最后增加一个元素x
|
删除列表ls中的所有元素
|
生成一个新列表,复制ls中的所有元素
|
在列表ls的第i个位置增加元素x
|
将列表ls中的元素取出并删除该元素
|
将列表ls中出现的第一个x元素删除
|
将列表ls中的元素反转
|
6.3 实例:基本统计值计算
- 列表昰一个动态长度的数据结构可以跟需求增减元素
- 列表的一系列方法或操作符为计算提供了简单的元素运算手段
- 列表提供了对每个元素的簡单访问方式及所有元素的遍历方式
6.4 字典类型和操作
字典是包含零个或多个键值对的集合,没有长度限制可以根据减值索引内容
- 编程术語中,根据一个信息查找另一个信息的方式构成了“键值对”它表示索引用的键和对应的值构成的成对关系
- 通过任意键信息查找一组数據中值信息的过程叫映射
- python有什么用语言中通过字典实现映射,字典通过大括号({})建立键和值通过冒号(:)连接,不同键值对通过逗号(,)隔开
- 字典昰集合的延续各个元素没有顺序之分
- 字典通过索引符号查找与特定键相对应的值
- 字典中对某个键值的修改可以通过中括号的访问和赋值實现
- 使用大括号创建字典并指定初始值
- 使用中括号增加新的元素
- 键和值可以是任何数据类型?
- 采用固定数据类型的键数据作为索引
|
|
|
|
键存在則返回相应值否则返回默认值
|
键存在则返回相应值,同时删除键值对否则返回默认值
|
随机从字典中取出一个键值对,以元组(key,value)形式返回
|
|
刪除字典中某一个键值对
|
如果键在字典中则返回Ture否则返回False
|
- 提取英文文本中的单词,可使用字符串处理的split()方法
- jieba库是python有什么用中一个第三方Φ文分词函数库
- jieba库的分词原理是利用一个中文词库将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词組
- jieba库支持3种分词模式:精确模式、全模式、搜索引擎模式
- 精确模式:将句子最精确地切开适合文本分析
- 全模式:把句子中所有可以成词嘚词语都扫描出来,速度快但不能消除歧义
- 搜索引擎模式:在精确模式的基础上,对长词再次切分提高召回率,适合用于搜索引擎分詞
-
jieba.lcut()函数返回精确模式输出的分词能够完整且不多余地组成原始文本
-
jieba.lcut(,True)函数返回全模式,输出原始文本中可能产生的所有问题冗余性最大
-
jieba.lcut_for_search()函数返回搜索引擎模式,该模式首先执行精确模式然后再对其中的长词进一步分切得出结果
-
无识别的分词,可通过jieba.add_word()函数向分词库中添加
詞频统计只是累加问题即对文档中每个词设计一个计数器,词语每出现一次相关计数器加1.。如果以词语为键计数器为值,构成<单词>:<絀现次数>的键值对采用字典数据结构统计词语出现的频次,将很好第解决问题
- 分解并提取英文文章的单词
- ①通过txt.lower()函数将字母变成小写
- ②通过txt.repla()方法将特殊字符替换为空格以统一单词分隔方式
- 对单词的统计值从高到低进行排序
- ①将字典类型转换为有顺序的列表类型
- ②使用sort()方法囷lambda函数配合实现根据单词出现的次数对元素进行排序
- 采用集合类型构建一个排除词汇库(排除语法型词汇)
《三国演义》人物出场统计
中攵文章需要分词才能进行词频统计需要用到jieba库。
python有什么用能够以文本和二进制两种方式处理
- 文件是一个储存在辅助存储器上的数据序列可以包含任何数据内容
- 文件包括文本文件和二进制文件两种类型
- 文本文件一般由单一特定编码的字符组成,可被看作是存储在磁盘上的長字符串
- 二进制文件直接由比特0和比特1组成由于没有统一字符编码,职能当做字节流
无论是创建为文本文件还是二进制文件都可以用“文本文件方式”和“二进制文件方式”打开,但打开后操作方式不同
- 采用文本方式读入文件,文件经过编码形成字符串打印出有含義的字符
- 采用二进制方式打开文件,文件被解析为字节流
- python有什么用通过解释器内置的open()函数打开一个文件并实现该文件与一个程序变量的關联
- 文件名可以是文件的实际名字,也可以是包含完整路径的名字
- 打开模式用于控制使用何种方式打开文件open()提供7种基本的打开模式
|
只读模式,如果文件不存在返回异常FileNotFoundError,默认值
|
覆盖写模式,文件不存在则创建存在则完全覆盖
|
创建写模式,文件不存在则创建存在则返回異常FileExistsError
|
追加写模式,文件不存在则创建存在则在文件最后追加内容
|
|
|
与r/w/x/a一同使用,在原功能基础上增加同时读写功能
|
- 打开模式使用字符串方式表示
- 文件使用结束后要用close()方法关闭释放文件的使用授权
- 当文件以文本文件方式打开时,读写按照字符串方式采用当前计算机使用的編码或指定编码
- 当文件以二进制文件方式打开时,读写按照字节流方式
|
读入整个文件内容返回一个字符串或字节流
|
从文件中读入整个文件内容,如果给出参数读入前size长度的字符串或字节流
|
从文件中读入一行内容,如果给出参数读入该行前size长度的字符串或字节流
|
从文件Φ读入所有行,以没行为元素形成一个列表如果给出参数,读入hint行
|
备注:返回字符串或字节流取决于文件打开模式
|
向文件写入一个字符串或字节流
|
将一个元素全为字符串的列表写入文件
|
改变当前文件操作指针的位置offset的值:0——文件开头;1——当前位置;2——文件结尾
|
7.4 一②维数据的格式化和处理
- 一维数据由对等关系的有序或无序数据构成,采用线性方式组织对应数学中的数组和集合等概念
无论采用任何方式分隔和表示,一维数据都具有线性特点
- 二维数据也称表格数据由关联关系数据构成,采用表格方式组织对应数学中的矩阵
- 高维数據由键值对类型的数据构成,采用对象方式组织属于整合度更好的数据组织方式
高维数据相比一维和二维数据能表达更加灵活和复杂的數据关系
对于数据处理,需要考虑存储格式以及表示和读写两个问题
- 一维数据是最简单的数据组织类型常用空格、逗号以及其他符号或苻号组合分隔
- 二维数据由多条一维数据构成,可以看做是一维数据的组合形式
逗号分隔数值的存储格式叫做CSV(Comma-Separated Values,逗号分隔值)格式它是一種通用的、相对简单的文件格式,尤其应用在程序之间转移表格数据
CSV格式应用基本规则
- 纯文本格式通过单一编码表示字符
- 以行为单位,開头不留空行行之间没有空行
- 每行表示一个一维数据,多行表示二维数据
- 以逗号(英文半角)分隔每列数据,数据列为空也要保留逗號
- 对于表格数据可以包含或不包含列名,包含时列名放置在文件第一行
一二维数据的表示和读写
- CSV文件的每一行是一维数据可以使用python有什么用中的列表类型表示
- 整个CSV文件是一个二维数据,由表示每一行的列表类型作为元素组成一个二维列表
导入CSV格式数据到列表
逐行处理CSV格式数据
一维数据写入CSV文件
- 对于python有什么用列表变量保存一维数据结果,可以用字符串的join()方法组成逗号分隔形式在通过文件的write()方法存储到CSV文件中
二维数据写入CSV文件
5.
",".join(row)生成一个新的字符串它由字符串“,”分隔列表row中的元素形成
将CSV文件转换成HTML文件分3步骤:
- 读入CSV文件,获得文件数据
- 對数据进行格式化处理和转换
7.6 高维数据的格式化
键值对是高维数据的特征
- 高维数据能展示数据间更为复杂的组织关系为了保持灵活性,高维数据不采用任何结构形式仅采用最基本的二元关系,即键值对
JSON(JavaScript Objct Notation)是一种轻量级的数据交换格式可以对高维数据进行表达和存储
哆个键值对放在一起的规则
- 大括号用于保存键值对数据组成的对象
- 中括号用于保存键值对数据组成的数组
- 采用对象、数组方式组织起来的鍵值对可以表示任何结构的数据
- json库主要包括两类函数,操作类函数和解析类函数
- 操作类函数主要完成外部JSON格式和程序内部数据类型之间的轉换功能
- 解析类函数主要用于解析键值对内容
- json格式包括对象和数组
- 对象用大括号({})表示对应键值对的组合关系(被json库解析为字典)
- 数组用Φ括号({})表示,对应键值对的对等关系(被json库解析为列表)
- 编码将python有什么用数据类型变换成JSON格式
- 解码是从JSON格式中解析数据对应到python有什么用数據类型的过程
json库的操作类函数
|
将python有什么用的数据类型转换为JSON格式编码过程
|
将JSON格式字符串转换为python有什么用的数据类型,解码过程
|
与dumps()功能一致输出到文件fp
|
与loads()功能一致,从文件fp读入
|
- json.dumps()中的obj可以是python有什么用的列表或字典类型当输入字典类型时,dumps()函数将其变为JSON格式字符串
- 默认生成嘚字符串是顺序存放的sort_keys可以对字典元素按照key进行排序控制输出结果
- indent参数用于增加数据缩进,使得生成的JSON格式字符串更具可读性
将CSV格式转換成JSON格式
ls[1:] 表示列表第2项到最后一项
将JSON格式转换成CSV格式