Python 数据分析与科学计算 课件全套 王小银 第1-11章 数据分析基础 -机器学习_第1页
Python 数据分析与科学计算 课件全套 王小银 第1-11章 数据分析基础 -机器学习_第2页
Python 数据分析与科学计算 课件全套 王小银 第1-11章 数据分析基础 -机器学习_第3页
Python 数据分析与科学计算 课件全套 王小银 第1-11章 数据分析基础 -机器学习_第4页
Python 数据分析与科学计算 课件全套 王小银 第1-11章 数据分析基础 -机器学习_第5页
已阅读5页,还剩569页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python数据分析与科学计算教材内容第1章数据分析基础第2章第3章第4章第5章第6章Python数据分析环境Python数据类型程序控制结构函数与模块文件第7章Numpy数值计算第8章第9章第10章第11章Pandas数据分析处理Matplotlib数据可视化机器学习SciPy科学计算第1章数据分析基础1.1数据分析概述1.2数据分析流程1.3常用数据分析工具

1.1数据分析基础

数据分析:用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总、理解并消化,把隐藏在数据背后的信息提炼出来,以求最大化地开发数据的功能,发挥数据的作用。数据分析是为了提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。

1.1数据分析基础

数据分析应用场景客户分析:根据客户的基本数据信息进行商业行为分析营销分析:产品分析、价格分析、渠道分析、广告与促销分析社交媒体:以不同的社交媒体渠道生成的内容为基础,实现不同社交媒体的用户分析、访问分析和互动分析网络安全:使用数据分析技术,建立潜在攻击识别分析模型,监测大量网络活动数据和相应的访问行为,识别可能进行入侵的可疑模式医疗行业:对疾病进行预测,达到疾病预防的目的物流领域:通过业务系统和GPS定位系统获得数据,使用数据构建交流状况预测分析模型,有效预测实时路况、物流状况、车流量、客流量和货物吞吐量设备管理:收集和分析设备上的数据流,包括连续用电、零部件温度、环境湿度和污染物颗粒等无数潜在特征

1.2数据分析流程

需求分析:了解数据分析的目的,提供数据分析的方向数据收集:根据数据分析目标和需求分析的结果,提取、收集数据数据预处理:对数据进行数据合并、数据清洗、数据变换和数据标准化数据分析与建模:通过分析方法和聚类、分类、关联规则、智能推荐等模型与算法等,对已处理的数据进行分析,提取有价值的信息,形成有效结论的过程数据可视化:将数据分析与预测结果以计算机图形或图像的方式展示给用户撰写分析报告:对整个数据分析过程的总结和呈现

1.3常用数据分析工具ExcelR语言Python语言MatlabWekaSASSPSSPython数据分析与科学计算机械工业出版社第2章Python数据分析环境2.1Python概述2.2Python语言特点2.3搭建Python开发环境2.4集成开发环境Pycharm2.5数据分析环境Anaconda2.6开发工具JupyterNotebook

2.1Python概述

Python原意:大蟒蛇开发者:荷兰人GuidovanRossum第一个Python编译器在1991年诞生1994年发布Python1.0版本,2000年发布Python2.0版本,2008年发布Python3.0版本

2.1Python概述

Python应用领域

科学计算和数据分析Web开发

人工智能

云计算

自动化运维

网络编程

2.2Python语言的特点Python语言设计理念是“优雅、明确、简单”Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”Python语言特点:语法简洁开源面向对象可移植性解释性可扩展性丰富的库健壮性

2.3Python开发环境1.Windows环境下安装Python开发环境在Python官网/下载安装包,选择Windows平台下的安装包

2.3Python开发环境1.Windows环境下安装Python开发环境单击Python3.10.2下载,下载的文件名为python-3.10.2-amd64.exe,双击该文件,进入Python安装界面

2.3Python开发环境1.Windows环境下安装Python开发环境单击Python3.10.2下载,下载的文件名为python-3.10.2-amd64.exe,双击该文件,进入Python安装界面任意选择一种安装方式

2.3Python开发环境1.Windows环境下安装Python开发环境安装成功提示信息

2.3Python开发环境2.安装Python包管理工具pip在Python官网/pypi/pip#downloads下载pip安装包,下载完成之后,解压pip安装包到一个文件夹,从控制台进入解压目录,输入下列命令安装pip:

pythonsetup.pyinstall安装完成之后,对pip环境变量进行设置打开控制台,输入piplist,有如下图显示,表示安装成功

2.3Python开发环境3.运行第一个Python程序交互式(两种方式进入)

第一种:启动Windows操作系统打开开始菜单,输入cmd之后,进入命令行窗口,在控制台中输入“python”,按【Enter】键进入交互式环境中,在命令提示符“>>>”后输入相应代码,例如:print("HelloWorld!")

按【Enter】键执行,得到运行结果

2.3Python开发环境3.运行第一个Python程序交互式(两种方式进入)

第二种:调用安装的Python自带的IDLE启动交互式窗口。

启动之后在命令提示符“>>>”后输入代码,再按【Enter】键执行,得到运行结果

2.3Python开发环境3.运行第一个Python程序文件式(1)打开IDLE,选择【File】→【NewFile】命令或按【Ctrl+N】快捷键,打开Python程序编辑窗口。(2)在Python程序编辑窗口输入程序的代码。(3)语句输入完成后,在Python程序编辑窗口选择【File】→【Save】命令,确定文件保存位置和文件名,例如“d:\Pycode\hello.py”。(4)在Python程序编辑窗口选择【Run】→【RunModule】命令或按F5快捷键,运行程序并在PythonIDLE中输出运行结果。

2.4集成开发环境——PyCharm4.集成开发环境——PyCharm安装访问PyCharm官网/pycharm/download/,进入PyCharm下载页面

2.4集成开发环境——PyCharm4.集成开发环境——PyCharm安装访问PyCharm官网/pycharm/download/,进入PyCharm下载页面

2.4集成开发环境——PyCharm4.集成开发环境——PyCharm安装双击下载的“pycharm-professional-2018.2.exe”文件,进入PyCharm安装界面

2.4集成开发环境——PyCharm4.集成开发环境——PyCharm安装单击【Next】按钮,依次进入选择安装路径界面和文件配置界面选择安装路径文件配置

2.4集成开发环境——PyCharm4.集成开发环境——PyCharm安装单击【Next】按钮,进入选择启动界面

2.4集成开发环境——PyCharm4.集成开发环境——PyCharm安装单击【Install】按钮,开始安装PyCharm安装PyCharm安装完成

2.4集成开发环境——PyCharm5.PyCharm的使用首次使用,会提示用户选择是否导入开发环境配置文件单击【OK】按钮,弹出提示用户阅读并接受协议界面

2.4集成开发环境——PyCharm5.PyCharm的使用单击【Accept】按钮,进入数据共享界面单击【Don’tsend】按钮,进入提示用户激活软件界面

2.4集成开发环境——PyCharm5.PyCharm的使用选择【Evaluateforfree】选项,单击【Evaluate】按钮,启动PyCharm,进入创建项目界面

2.4集成开发环境——PyCharm5.PyCharm的使用选择创建一个新项目,单击【CreateNewProject】,进入项目设置界面

2.4集成开发环境——PyCharm5.PyCharm的使用在上图中【Location】中填写项目保存的路径之后,单击【Create】按钮,进入项目欢迎界面

2.4集成开发环境——PyCharm5.PyCharm的使用单击上图中【Close】按钮,进入项目开发界面,此时,需要在项目中创建Python文件。选择项目名称,单击鼠标右键,在弹出的快捷菜单中选择【New】→【PythonFile】

2.4集成开发环境——PyCharm5.PyCharm的使用为新建的Python文件命名在【Name】文本框中输入文件名,例如“hello”,单击【OK】按钮,文件创建成功

2.4集成开发环境——PyCharm5.PyCharm的使用在文本框中输入程序代码,并保存程序单击菜单栏【Run】→【Run‘hello’】或使用快捷键【Shift+F10】,运行程序

2.5数据分析环境Anaconda1.安装Anaconda访问Anaconda官网/download/,下载安装包

2.5数据分析环境Anaconda1.安装Anaconda安装Anaconda过程

2.5数据分析环境Anaconda1.安装Anaconda安装Anaconda过程

2.5数据分析环境Anaconda1.安装Anaconda安装Anaconda过程

2.5数据分析环境Anaconda1.安装Anaconda安装完成AnacondaNavigator:用于管理工具包和环境的图形用户界面。AnacondaPowerShellPrompt和AnacondaPrompt:Anaconda自带的命令行界面。JupyterNotebook:基于Web的交互式计算环境。Spyder:使用Python语言、跨平台的科学运算集成开发环境。

2.5数据分析环境Anaconda2.通过Anaconda管理Python包检测conda是否被安装打开AnacondaPrompt工具,然后在AnacondaPrompt中通过命令检测conda是否被安装,命令格式为:(base)C:\Users\admin>conda--versionconda23.5.2返回当前的版本号

2.5数据分析环境Anaconda2.通过Anaconda管理Python包查看当前环境下的包信息使用list命令可以获取当前环境中已经安装的包信息,命令格式为:condalist执行该命令后,终端会显示当前环境下已安装的包及其版本号

2.5数据分析环境Anaconda2.通过Anaconda管理Python包查找包使用search命令可以查找可供安装的包,命令格式为:condasearch--full-name包的全名上述命令中,--full-name为精确查找的参数,后面紧跟的是包的全名。例如,查找全名为“python”的包有哪些版本可供安装,命令格式为:condasearch--full-namepython

2.5数据分析环境Anaconda2.通过Anaconda管理Python包安装包使用install命令可以安装包。如果要实现在指定环境中进行安装,则可以在install命令后面指定环境名称,命令格式为:condainstall--nameenv_name

package_name

其中,env_name参数表示包安装的环境名称,package_name表示将要安装的包名称。

例如,在Python3环境中安装pandas包,命令格式为:condainstall--namepython3pandas如果要在当前的环境中安装包,则可以直接使用install命令进行安装,命令格式为:condainstallpackage_name执行上述命令,会在当前的环境下安装package_name包。

2.5数据分析环境Anaconda2.通过Anaconda管理Python包卸载包使用remove命令可以卸载包。如果要在指定的环境中卸载包,则可以在指定环境下使用remove命令进行移除,命令格式为:condaremove--nameenv_name

package_name例如,卸载Python3环境下的pandas包,命令格式为:condaremove--namepython3pandas

2.5数据分析环境Anaconda2.通过Anaconda管理Python包更新包使用update命令可以更新包。更新当前环境下所有的包,命令格式为:condaupdate--all如果只想更新某个包或某些包,则直接在update命令的后面加上包名即可,多个包之间使用空格隔开,例如:condaupdatenumpycondaupdatenumpymatplotlibScikit-learn

2.6开发工具JupyterNotebook1.启动Anaconda自带的JupyterNotebook同时,系统默认的浏览器会弹出JupyterNotebook的主界面,该界面默认打开和保存的目录为C:\Users\当前用户名。

2.6开发工具JupyterNotebook1.启动Anaconda自带的JupyterNotebook在Windows系统的“开始”菜单中,打开Anaconda3目录,找到并单击“JupyterNotebook”,会弹出启动窗口

2.6开发工具JupyterNotebook2.使用JupyterNotebook编写程序点击JupyterNotebook主界面右上角New→Python3(ipykernel),创建一个基于Python3的笔记本

2.6开发工具JupyterNotebook2.使用JupyterNotebook编写程序在新建文件中编写代码,然后运行

2.7Python程序基本结构1.简单Python程序【例1.1】输出字符串:“HelloWorld!”程序代码:print(‘HelloWorld!’)运行结果:pleaseinputthenumberofx,y,z:3,6,9aver=6.0Hello,World!

2.7Python程序基本结构1.简单Python程序【例1.2】从键盘输入3个数,求它们的平均值程序代码:x,y,z=input(‘pleaseinputthenumberofx,y,z:’)sum=x+y+zaver=sum/3.0print(‘aver=’,aver)运行结果:pleaseinputthenumberofx,y,z:3,6,9aver=6.0

2.7Python程序基本结构【例1.3】使用函数,求解圆形、长方形、三角形的面积程序代码:

#圆形面积defCirArea(r):area=3.14*r*rprint("theareaofcircleis:",area)#长方形面积defRectArea(a=5,b=6):area=a*bprint("theareaofrectangleis:",area)#三角形面积defTriArea(b,h):area=1.0/2*b*hprint("theareaoftriangleis:")returnareaCirArea(4)RectArea()print(TriArea(3,4))运行结果:theareaofcircleis:50.24theareaofRectangleis:20theareaofTriangleis:6.0

2.7Python程序基本结构2.用缩进表示代码块Python语言采用严格的“缩进”表示程序的逻辑关系当表示分支、循环、函数、类等程序结构时,在if、while、for、def、class等保留字所在语句后通过冒号(:)结尾,并在之后行缩进代码缩进有两种方式:采用制表符(即键盘上的Tab键)和采用若干个空格不建议混合使用空格和Tab

2.7Python程序基本结构3.代码注释单行注释:#例如:print("HelloWorld!")#输出HelloWorld!“#”右边的内容在执行的时候不会被输出多行注释:三个单引号(''')或者三个双引号(""")例如:'''print("HelloWorld!")输出HelloWorld!'''

2.7Python程序基本结构4.语句续行Python有两种续行方式,一种是使用反斜线“\”符号另一种特殊情况下的续行方式是在使用括号时,括号中的内容可分行书写,括号中的空白和换行符都会被忽略#表达式续行>>>a=1+2+3+\+4+5>>>print(a)15#输出续行>>>print("Thisis\alongsentence.")Thisisalongsentence.>>>print("Thisisalongsentence.")Thisisalongsentence.

2.7Python程序基本结构5.语句分隔在一行中书写多条句,就需要使用分号(;)分隔每条语句>>>a=1;b=2;c=3#以分号分隔的3条语句,分别给a、b、c赋值>>>print(a,b,c)#输出a、b、c的值123

2.8Python的版本在Python官方网站上同时提供了Python2.x和Python3.x两个不同系列的版本。1.input()函数Python3.x去掉了raw_input()函数,用input()替代raw_input()函数返回一个字符串2.print()函数Python2.xPython3.x功

能printprint()输出回车换行print3print(3)输出一个值,以回车结束,光标停留在下一行行首print3,print(3,end=’’)输出一个值,光标停留在输出数据行尾print3,5print(3,5)输出多个值,以空格分割

2.8Python的版本3.Unicode编码Python2.x中的字符串基于ASCII编码;Python3.x默认使用UTF-8编码

Python2.xPython3.x>>>str="中华人民共和国">>>str'\xd6\xd0\xbb\xaa\xc8\xcb\xc3\xf1\xb9\xb2\xba\xcd\xb9\xfa'>>>str="中华人民共和国">>>str'中华人民共和国'

2.8Python的版本4.除法运算Python的除法运算包括/和//两个运算符,/在Python2.x和Python3.x使用方法不同Python2.xPython3.x>>>5/31>>>5/3.01.6666666666666667>>>5/31.6666666666666667>>>5.0/31.6666666666666667

2.8Python的版本5.数据类型(1)Python3.x去掉了长整数类型long,不再区分整数和长整数类型,只有一个int类型。int类型无取值范围限定。(2)Python3.x新增了bytes类型,对应于Python2.x版本的八位串。定义一个bytes类型的方法如下:>>>a_bytes=b'Python'>>>a_bytesb'Python'>>>type(a_bytes)<class'bytes'>

2.8Python的版本6.异常处理Python2.xPython3.x功

能Exceptionexc,varExceptionexcasvar或Exception(exc1,exc2)asvar捕获异常raiseException,argsraiseException(args)”处理异常

2.8Python的版本7.不等于运算符Python2.x中,不等于运算符有!=和<>两种写法;Python3.x中去掉了<>,只有!=一种写法。8.八进制形式Python2.x中,八进制以0开头;Python3.x中,八进制以0o开头。Python数据分析与科学计算机械工业出版社第3章Python数据类型3.1Python的基本数据类型3.2Python组合数据类型3.3数据的输入与输出3.1python的基本数据类型

在程序设计语言中,都是采用数据类型来描述程序中的数据结构、数据的表示范围和数据在内存中的存储分配等。整型数据即整数,不带小数点,可以有正号或者负号。在Python3.x中,整型数据在计算机内的表示没有长度限制,其值可以任意大。>>>a=12345678900123456789>>>b=a*a>>>b152415787504953525750053345778750190521

1.整型数据3.1python的基本数据类型

十进制整数:由0到9组成。二进制整数:以0b或0B为前缀,由0和1组成。八进制整数:以0o或0O为前缀,其后由0至7的数字组成。十六进制整数:以0x或0X开头,其后由0至9的数字和a至f字母或A至F字母组成。根据前缀来区分各种进制数3.1python的基本数据类型

实数又称浮点数,一般有两种表示形式:十进制小数形式:由数字和小数点组成(必须有小数点

指数形式:用科学计数法表示的浮点数,用字母e(或E)表示以10为底的指数,e之前为数字部分,之后为指数部分。注意:e(或E)前面必须有数字,后面必须是整数。

2.实型数据例如:e-5,1.2E-3.5,1e3.1python的基本数据类型

字符型数据可以使用一对单引号、双引号或者三引号3.字符型数据>>>"Let'sgo""Let'sgo">>>s="'Python'Program">>>s"'Python'Program"3.1python的基本数据类型

转义字符字符形式含义\n

回车换行,将当前位置移到下一行开头\t

横向跳到下一制表位置(Tab)\b

退格,将当前位置退回到前一列\r

回车,将当前位置移到当前行开头\f

走纸换页,将当前位置移到下页开头\\

反斜线符"\"\'单引号符\"双引号符\ddd1~3位8进制数所代表的字符\xhh1~2位16进制数所代表的字符3.1python的基本数据类型

3.1python的基本数据类型

【例2.2】

转义字符的应用。程序代码:a=1b=2c='\101'print("\t%d\n%d%s\n%d%d\t%s"%(a,b,c,a,b,c))运行结果:□□□□□□□□12A12□□□□□□APython的布尔类型有两个值:True和False,分别表示逻辑真和逻辑假。4.布尔型数据>>>type(True)

<class'bool'>>>>True==1

True>>>False==0

True3.1python的基本数据类型

布尔类型还可以与其他数据类型进行逻辑运算,Python规定:0、空字符串、None为False,其他数值和非空字符串为True。>>>0andFalse0>>>NoneorTrueTrue3.1python的基本数据类型

复数由两部分组成:实部和虚部

复数的形式为:实部+虚部j5.复数类型数据>>>x=3+5j>>>x.real

3.0>>>x.imag

5.0>>>y=6-10j>>>x+y

(9-5j)3.1python的基本数据类型

3.2运算符与表达式1.Python运算符Python语言的运算符按照它们的功能可分为:(1)算术运算符(+、–、*、/、**、//、%)。(2)关系运算符(>、<、>=、<=、==、!=)。(3)逻辑运算符(and、or、not)。(4)位运算符(<<、>>、~、|、^、&)。(5)赋值运算符(=、复合赋值运算符)。(6)成员运算符(in、notin)。(7)同一运算符(is、isnot)。(8)下标运算符([])。(9)其他(如函数调用运算符())。3.2运算符与表达式Python中的运算符具有优先级和结合性。(1)优先级:指同一个表达式中不同运算符进行运算时的先后次序。通常所有单目运算符的优先级高于双目运算符。(2)结合性:指在表达式中各种运算符优先级相同时,由运算符的结合性决定表达式的运算顺序。它分为两类:一类运算符的结合性为从左到右,称为左结合性;另一类运算符的结合性是从右到左,称为右结合性。通常单目、三目和赋值运算符是右结合性,其余均为左结合性。

3.2运算符与表达式2.算术运算符和算术表达式运算符含义优先级结合性+加法这些运算符的优先级相同,但比下面的运算符优先级低左结合-减法*乘法这些运算符的优先级相同,但比上面的运算符优先级高/除法//取整除**幂运算%取模

Python中除法有两种:/和//,在Python3.x分别表示除法和整除运算。>>>3/5

0.6-------------------------->>>3//5

0-------------------------->>>-3.0//5

-1.0------------------------->>>3.0//-5

-1.03.2运算符与表达式

**运算符实现乘方运算,其优先级高于*和/。例如:>>>2**3

8---------------------->>>2**3.5

11.313708498984761---------------------->>>4*3**2

36运算符的多重含义:>>>3*5#整数相乘运算

15-------------------------->>>'a'*10#字符串重复运算

'aaaaaaaaaa'--------------------------

赋值运算符赋值运算符用“=”表示。

赋值表达式

变量=表达式等号的左边必须是变量,右边是表达式。>>>y=2>>>x=(y+2)/3>>>x

1.33333333333333333.2运算符与表达式3.赋值运算符和赋值表达式(1)链式赋值在Python中,可通过链式赋值将同一个值赋给多个变量的,一般形式为:>>>x=y=5>>>x5多变量赋值(2)多变量并行赋值

变量1,变量2,…,变量n=表达式1,表达式2,…,表达式n变量个数要与表达式的个数一致,其过程为:首先计算表达式右边n个表达式的值,然后同时将表达式的值赋给左边的n个变量。例如:>>>x,y,z=2,5,8>>>x

2------------------->>>y

5------------------->>>z

83.2运算符与表达式3.2运算符与表达式例如:

采取并行赋值,可以使用一条语句就可以交换两个变量的值:x,y=y,x。>>>x=20>>>x,x=3,x*3>>>x60赋值运算符“=”与7种算术运算符(+、-、*、/、//、**、%)和5种位运算符(>>、<<、&、^、|)结合构成12种复合的赋值运算符。例如:a+=3 等价于 a=a+3a*=a+3 等价于 a=a*(a+3)a%=3 等价于 a=a%3注意:“a*=a+3”与“a=a*a+3”是不等价的,“a*=a+3”等价于“a=a*(a+3)”,这里括号是必需的。3.2运算符与表达式复合的赋值运算符【例2.6】复合的赋值运算符。>>>a=3>>>b=5>>>a+=b>>>a

8----------------------------------------->>>a>>=2>>>a

2----------------------------------------->>>a*=a+3>>>a

103.2运算符与表达式

3.2运算符与表达式4.关系运算符和关系表达式运算符含义运算符含义>

大于>=大于等于<

小于<=小于等于==等于!=不等于在Python中,真用“True”表示,假用“False”表示。

3.2运算符与表达式>>>x,y,z=2,3,5>>>x>yFalse>>>y<zTrue>>>x<y<zTrue注意正确使用“=”与“==”a,b=0,1ifa=b:print("aequaltob")else:print("anotequaltob")语法错误:invalidsyntaxa,b=0,1ifa==b:print("aequaltob")else:print("anotequaltob")运行结果:anotequaltob关系运算符——注意符号区别3.2运算符与表达式

3.2运算符与表达式5.逻辑运算符和逻辑表达式逻辑运算符运算符含义结合性not逻辑非右结合and逻辑与左结合Or逻辑或(1)对于与运算aandb如果a为真,继续计算b,b将决定最终整个表达式的真值,所以,结果为b的值。如果a为假,无需计算b,就可以得知整个表达式的真值为假,所以,结果为a的值。例如:

3.2运算符与表达式逻辑表达式>>>Trueand0

0

>>>Falseand12False(2)对于或运算aorb如果a为真,无需计算b,就可得知整个表达式的真值为真,所以结果为a的值。如果a为假,继续计算b,b将决定整个表达式最终的值,所以结果为b的值。例如:3.2运算符与表达式>>>Trueor0

True>>>Falseor12

12>>>Falseor12or0

12

成员运算符用于判断一个元素是否在某一个序列中,或者判断一个字符是否属于这个字符串等,运算结果仍是逻辑值。运算符含义优先级结合性in存在

相同左结合notin不存在>>>'a'in'abcd'True>>>'ac'in'abcd'False3.2运算符与表达式6.成员运算符和成员表达式

notin运算符用于在指定的序列中查找某个值是否不存在,不存在返回True,存在返回False。3.2运算符与表达式>>>'a'notin'bcd'

True>>>3notin[1,2,3,4]False同一性运算符用于测试两个变量是否指向同一个对象,其运算结果是逻辑值。运算符含义优先级结合性is相同

相同左结合isnot不相同is检查用来运算的两个变量是否引用同一对象,如果相同返回True,不相同则返回False。isnot检查用来运算的两个变量是否不是引用同一对象,如果不是同一个对象返回True,否则返回False。3.2运算符与表达式7.同一性运算符和同一性表达式>>>x=y=2.5>>>z=2.5>>>xisyTrue>>>xiszFalse>>>xisnotzTrue3.2运算符与表达式位运算是一种对运算对象按二进制位进行操作的运算。位运算不允许只操作其中的某一位,而是对整个数据按二进制位进行运算。位运算的对象只能是整型数据,其运算结果仍是整型。Python语言提供的位运算符主要有:&(按位“与”)、|(按位“或”)、^(按位“异或”)、~(按位“取反”)、<<(“左移”)和>>(“右移”)6种。除~是单目运算符外,其余均是双目运算符。3.2运算符与表达式8.位运算符和位运算表达式&(按位“与”)3.2运算符与表达式运算规则为:0&0=0、0&1=0、1&0=0、1&1=1。参与运算的两个数均以补码形式出现。按位“与”运算通常用来对某些位清0或保留某些位。例如把a=123清零,可作a&0运算;b=12901的高八位清零,保留低八位,可作

b&255运算。|(按位“或”)3.2运算符与表达式运算规则为:0|0=0、0|1=1、1|0=1、1|1=1。参与运算的两个数均以补码形式出现。按位“或”运算通常用来对某些位置1。例如把a=160的低4位置1,可作a|15运算;把b=3的第0位和第3位置1,其余位不变,可作b|9运算。^(按位“异或”)3.2运算符与表达式运算规则为:0^0=0、0^1=1、1^0=1、1^1=0。参与运算的两个数均以补码形式出现。按位“异或”运算通常用来使特定位翻转或保留原值。例如使a=123低4位翻转,可作a^15运算;使b=12901保持原值,可作b^0运算。~(按位“取反”)3.2运算符与表达式运算规则为:~0=1、~1=0。按位“取反”运算通常用来间接地构造一个数,以增强程序的可移植性。<<(按位“左移”)运算规则为:将操作对象各二进制位全部左移指定的位数,移出的高位丢弃,空出的低位补0。如a<<4指把a的各二进制位向左移动4位,a=57,则0000000000111001(十进制57)左移4位后为0000001110010000(十进制912)。若左移时丢弃的高位不包含1,则每左移一位,相当于给该数乘以2。>>(按位“右移”)3.2运算符与表达式运算规则为:将操作对象各二进制位全部右移指定的位数。移出的低位丢弃,空出的高位对于无符号数补0。对于有符号数,右移时符号位将随同移动,空出的高位正数补0,负数补1。如a>>4指把a的各二进制位向右移动4位,a=57则0000000000111001(十进制57)右移4位后为0000000000000011(十进制3)。

每右移一位,相当于给该数除以2,并去掉小数。3.3组合数据类型序列中的每一个元素都有自己的位置编号,可以通过偏移量索引来读取数据。1.序列类型读取元素方法:序列名[索引]索引范围:-n~n-1(包含n个元素的序列)3.3组合数据类型集合类型中的元素是无序的,无法通过下标索引的方法访问集合类型中的每一个数值集合中的元素不能重复集合中的元素类型只能是固定的数据类型2.集合类型映射类型是“键-值”对的集合元素之间是无序的,通过键可以找出该键对应的值映射类型的典型代表是字典3.映射类型3.3组合数据类型-列表是Python中内置数据类型,是一个元素的有序集合一个列表中的数据类型可以各不相同列表中的每一个数据称为元素其所有元素用逗号分割并放在一对中括号“[”和“]”中例如:[1,2,3,4,5]['Python','C','HTML','Java','Perl

']['wade',3.0,81,['bosh','haslem']]>>>a_list=

['physics','chemistry',2017,2.5]>>>b_list=['wade',3.0,81,['bosh','haslem']]>>>c_list=[1,2,(3.0,'helloworld!')]>>>d_list=[]3.3组合数据类型-列表1.列表的基本操作列表的创建使用赋值运算符“=”将一个列表赋值给变量即可创建列表对象。>>>a_list=[‘physics’,‘chemistry’,2017,2.5,[0.5,3]]>>>a_list[1]'chemistry'>>>a_list[-1][0.5,3]>>>a_list[5]#下标越界Traceback(mostrecentcalllast):File"<pyshell#9>",line1,in<module>

a_list[5]IndexError:listindexoutofrange3.3组合数据类型-列表列表元素读取方法为:列表名[索引]切片操作的方法是:列表名[开始索引:结束索引:步长]列表切片>>>a_list[1:3]#开始为1,结束为2,不包括3,步长缺省1['chemistry',2017]>>>a_list[1:-1]['chemistry',2017,2.5]>>>a_list[:3]#左索引缺省为0['physics','chemistry',2017]>>>a_list[1:]#从第一个元素开始截取列表['chemistry',2017,2.5,[0.5,3]]>>>a_list[:]#左右索引均缺省['physics','chemistry',2017,2.5,[0.5,3]]>>>a_list[::2]#左右索引均缺省,步长为2['physics',2017,[0.5,3]]3.3组合数据类型-列表a_list=[‘physics’,‘chemistry’,2017,2.5,[0.5,3]](1)使用“+”运算符将一个新列表添加在原列表的尾部增加元素>>>id(a_list)#获取列表a_list的地址49411096>>>a_list=a_list+[5]>>>a_list['physics','chemistry',2017,2.5,[0.5,3],5]>>>id(a_list)#获取添加元组时候a_list的地址498449923.3组合数据类型-列表a_list=[‘physics’,‘chemistry’,2017,2.5,[0.5,3]](2)使用append()方法向列表尾部添加一个新的元素

>>>a_list.append('Python')

>>>a_list['physics','chemistry',2017,2.5,[0.5,3],5,'Python'](3)使用extend()方法将一个新列表添加在原列表的尾部>>>a_list.extend([2017,'C'])>>>a_list['physics',2017,'chemistry',2.5,[0.5,3],5,'Python',2017,'C'](4)使用insert()方法将一个元素插入到列表的指定位置>>>

a_list.insert(3,3.5)>>>a_list['physics',2017,'chemistry',3.5,2.5,[0.5,3],5,'Python',2017,'C']3.3组合数据类型-列表a_list=[‘physics’,‘chemistry’,2017,2.5,[0.5,3],5](1)使用index()方法可以获取指定元素首次出现的下标一般形式:index(value,[,start,[,end]])检索元素>>>a_list.index(2017)1>>>a_list.index(2017,2)8>>>a_list.index(2017,5,7)Traceback(mostrecentcalllast):File"<pyshell#10>",line1,in<module>a_list.index(2017,5,7)ValueError:2017isnotinlist3.3组合数据类型-列表a_list=['physics',2017,'chemistry',3.5,2.5,[0.5,3],5,'Python',2017,'C']>>>5ina_listTrue>>>0.5ina_listFalse3.3组合数据类型-列表(2)使用count()方法统计列表中指定元素出现的次数>>>a_list.count(2017)2>>>a_list.count([0.5,3])1>>>a_list.count(0.5)

0(3)使用in运算符检索某个元素是否在该列表中a_list=['physics',2017,'chemistry',3.5,2.5,[0.5,3],5,'Python',2017,'C']删除元素>>>b_list=[10,7,1.5]>>>b_list[10,7,1.5]>>>delb_list>>>b_listTraceback(mostrecentcalllast):File"<pyshell#42>",line1,in<module>

b_listNameError:name'b_list'isnotdefined3.3组合数据类型-列表(1)使用del命令删除列表中指定位置的元素>>>dela_list[2]>>>a_list['physics',2017,3.5,2.5,[0.5,3],5,'Python',2017,'C']del命令也可以直接删除整个列表a_list=['physics',2017,'chemistry',3.5,2.5,[0.5,3],5,'Python',2017,'C']>>>a_list.remove(2017)>>>a_list['physics',3.5,2.5,[0.5,3],5,'Python',2017,'C']>>>a_list.remove(2017)>>>a_list['physics',3.5,2.5,[0.5,3],5,'Python','C']>>>a_list.remove(2017)Traceback(mostrecentcalllast):File"<pyshell#30>",line1,in<module>

a_list.remove(2017)ValueError:list.remove(x):xnotinlist3.3组合数据类型-列表(2)使用remove()方法删除首次出现的指定元素a_list=['physics',2017,'chemistry',3.5,2.5,[0.5,3],5,'Python',2017,'C']2.列表的常用函数cmp()格式:cmp(列表1,列表2)在Python3.x中,不再支持cmp()函数,可以直接使用关系运算符来比较数值或列表。>>>[123,'Bsaic']>[123,'Python']False>>>[1,2,3]==[1,2,3]True3.3组合数据类型-列表>>>cmp([1,2,5],[1,2,3])1>>>cmp([1,2,3],[1,2,3])0>>>cmp([123,'Bsaic'],[123,'Python'])-1>>>a_list=['physics','chemistry',2017,2.5,[0.5,3]]>>>len(a_list)5>>>len([1,2.0,'hello'])3>>>a_list=['123','xyz','zara','abc']>>>max(a_list)'zara'>>>min(a_list)'123'3.3组合数据类型-列表len()格式:len(列表)max()和min()格式:max(列表),min(列表)>>>a_list=[23,59,-1,2.5,39]>>>sum(a_list)122.5>>>b_list=['123','xyz','zara','abc']>>>sum(b_list)Traceback(mostrecentcalllast):File"<pyshell#11>",line1,in<module>sum(b_list)TypeError:unsupportedoperandtype(s)for+:'int'and'str'3.3组合数据类型-列表sum()格式:sum(列表)>>>a_list=[80,48,35,95,98,65,99,95,18,71]>>>sorted(a_list,reverse=True)[99,98,95,95,80,71,65,48,35,18]>>>sorted(a_list,reverse=False)[18,35,48,65,71,80,95,95,98,99]3.3组合数据类型-列表sorted()格式:sorted(列表)功能:对列表进行排序,默认是按照升序排序。该方法不会改变原列表的顺序。>>>a_list=[80,48,35,95,98,65,99,95,18,71]>>>sorted(a_list)[18,35,48,65,71,80,95,95,98,99]>>>a_list[80,48,35,95,98,65,99,95,18,71]降序排序:在sorted()函数的列表参数后面增加一个reverse参数,其值等于True表示降序排序,等于Flase表示升序排序。>>>a_list=[80,48,35,95,98,65,99,95,18,71]>>>a_list.sort(reverse=True)>>>a_list[99,98,95,95,80,71,65,48,35,18]>>>a_list.sort(reverse=False)>>>a_list[18,35,48,65,71,80,95,95,98,99]3.3组合数据类型-列表sort()格式:list.sort()功能:对列表进行排序,排序后的新列表会覆盖原列表,默认为升序排序。>>>a_list=[80,48,35,95,98,65,99,95,18,71]>>>a_list.sort()>>>a_list[18,35,48,65,71,80,95,95,98,99]降序排序:在sort()方法中增加一个reverse参数>>>a_list=[80,48,35,95,98,65,99,95,18,71]>>>a_list.reverse()>>>a_list

[71,18,95,99,65,98,95,35,48,80]3.3组合数据类型-列表reverse()格式:list.reverse()功能:对list列表中的元素进行翻转存放,不会对原列表进行排序。方法功能list.append(obj)在列表末尾添加新的对象list.extend(seq)在列表末尾一次性追加另一个序列中的多个值list.insert(index,obj)将对象插入列表list.index(obj)从列表中找出某个值第一个匹配项的索引位置list.count(obj)统计某个元素在列表中出现的次数list.remove(obj)移除列表中某个值的第一个匹配项list.pop(obj=list[-1])移除列表中的一个元素,并返回该元素的值sort()对原列表进行排序reverse()反向存放列表元素cmp(list1,list2)比较两个列表的元素len(list)求列表元素个数max(list)返回列表元素的最大值min(list)返回列表元素的最小值list(seq)将元组转换为列表sum(list)对数值型列表元素求和列表基本操作及常用函数3.3组合数据类型-列表3.列表应用举例【例6.1】从键盘上输入一批数据,对这些数据进行逆置,最后按照逆置后的结果输出。分析:将输入的数据存放在列表中,将列表的所有元素镜像对调,即第一个与最后一个对调,第二个与倒数第二个对调,……。b_list=input("请输入数据:")a_list=[]foriinb_list.split(','):a_list.append(i)print("逆置前数据为:",a_list)n=len(a_list)foriinrange(n//2):a_list[i],a_list[n-i-1]=a_list[n-i-1],a_list[i]print("逆置后数据为:",a_list)3.3组合数据类型-列表【例6.2】编写程序,求出1000以内的所有完数,并按下面的格式输出其因子:6itsfactorsare1,2,3。分析:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6就是一个完数,因为6的因子有1、2、3,且6=1+2+3。3.3组合数据类型-列表程序代码:m=1000forainrange(2,m+1):s=0L1=[]foriinrange(1,a):ifa%i==0:s+=i

L1.append(i)ifs==a:print("%ditsfactorsare:"%a,L1)运行结果:6itsfactorsare:[1,2,3]28itsfactorsare:[1,2,4,7,14]496itsfactorsare:[1,2,4,8,16,31,62,124,248]元组(tuple)的定义形式与列表类似,区别在于定义元组时所有元素放在一对圆括号“(”和“)”中。例如:

(1,2,3,4,5)('Python','C','HTML','Java','Perl

')3.3组合数据类型-元组1.元组的基本操作>>>a_tuple=

('physics','chemistry',2017,2.5)>>>b_tuple=(1,2,(3.0,'helloworld!'))>>>c_tuple=('wade',3.0,81,['bosh','haslem'])>>>d_tuple=()>>>x=(1)>>>x1>>>y=(1,)>>>y(1,)

>>>z=(1,2)>>>z(1,2)3.3组合数据类型-元组元组的创建赋值运算符“=”将一个元组赋值给变量即可创建元组对象。创建只包含一个1个元素的元组方法:>>>a_tuple=('physics','chemistry',2017,2.5)>>>a_tuple[1]'chemistry'>>>a_tuple[-1]2.5>>>a_tuple[5]Traceback(mostrecentcalllast):File"<pyshell#14>",line1,in<module>

a_tuple[5]IndexError:tupleindexoutofrange3.3组合数据类型-元组读取元素方法为:元组名[索引]>>>a_tuple[1:3]('chemistry',2017)>>>a_tuple[::3]('physics',2.5)元组切片元组也可以进行切片操作,方法与列表类似>>>a_tuple.index(2017)2>>>a_tuple.index('physics',-3)Traceback(mostrecentcalllast):File"<pyshell#24>",line1,in<module>a_tuple.index('physics',-3)ValueError:tuple.index(x):xnotintuple3.3组合数据类型-元组检索元素(1)使用index()方法可以获取指定元素首次出现的下标>>>'chemistry'ina_tupleTrue>>>0.5ina_tupleFalse(2)使用count()方法统计元组中指定元素出现的次数>>>a_tuple.count(2017)1>>>a_tuple.count(1)0(3)使用in运算符检索某个元素是否在该元组中。a_tuple=('physics','chemistry',2017,2.5)>>>dela_tuple>>>a_tupleTraceback(mostrecentcalllast):File"<pyshell#30>",line1,in<module>

a_tupleNameError:name'a_tuple'isnotdefined3.3组合数据类型-元组删除元组使用del语句删除元组,删除之后对象就不存在了,再次访问会出错。2.列表与元组的区别及转换列表与元组的区别(1)元组的处理速度和访问速度比列表快。如果定义了一系列常量值,主要对其进行遍历或者类似用途,而不需要对其元素进行修改,这种情况一般使用元组。可以认为元组对不需要修改的数据进行了“写保护”,可以使代码更安全。(2)作为不可变序列,元组(包含数值、字符串和其他元组的不可变数据)可用作字典的键,而列表不可以充当字典的键,因为列表是可变的。3.3组合数据类型-元组列表与元组的转换>>>a_list=['physics','chemistry',2017,2.5,[0.5,3]]>>>tuple(a_list)('physics','chemistry',2017,2.5,[0.5,3])>>>type(a_list)<class'list'>>>>b_tuple=(1,2,(3.0,'helloworld!'))>>>list(b_tuple)[1,2,(3.0,'helloworld!')]>>>type(b_tuple)<class'tuple'>3.3组合数据类型-元组3.元组应用>>>v=('Python',2,True)>>>(x,y,z)=v>>>x'Python'>>>y2>>>zTrue3.3组合数据类型-元组利用元组来一次性给多个变量赋值。Python中的字符串用一对单引号(')或双引号(")括起来。例如:>>>'Python' 'Python'>>>"PythonProgram"'PythonProgram'3.3组合数据类型-字符串1.三重引号字符串>>>'''Pythonisan"object-oriented"open-sourceprogramminglanguage''''Pythonisan"object-oriented"\nopen-sourceprogramminglanguage'2.字符串基本操作>>>str1="Hello">>>str1"Hello">>>str2='Program\n\'Python\'' >>>str2"Program\n'Python'"3.3组合数据类型-字符串字符串创建使用赋值运算符“=”将一个字符串赋值给变量字符串元素读取方法为:字符名[索引]>>>str1[0]'H'>>>str1[-1]‘o’>>>str="PythonProgram">>>str[0:5:2] 'Pto'>>>str[:]'PythonProgram'>>>str[-1:-20]''

>>>str[-1:-20:-1]'margorPnohtyP'3.3组合数据类型-字符串字符串分片方法:字符串名[开始索引:结束索引:步长]>>>"Hello"+"World"'HelloWorld'>>>"P"+"y"+"t"+"h"+"o"+"n"+"Program"'PythonProgram'将字符串和数值类型数据进行连接时,需要使用str()函数将数值数据转换成字符串,然后再进行连接运算。>>>"Python"+str(3)'Python3'连接使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论