Python数据处理、分析、可视化与数据化运营 (第二版) 课件 第2章 Python基本语法_第1页
Python数据处理、分析、可视化与数据化运营 (第二版) 课件 第2章 Python基本语法_第2页
Python数据处理、分析、可视化与数据化运营 (第二版) 课件 第2章 Python基本语法_第3页
Python数据处理、分析、可视化与数据化运营 (第二版) 课件 第2章 Python基本语法_第4页
Python数据处理、分析、可视化与数据化运营 (第二版) 课件 第2章 Python基本语法_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

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

文档简介

Python基本语法02Python数据处理、分析、可视化与数据化运营(第二版)本章学习目标深入理解Python的基本特性和语法规则全面掌握Python的数据类型和结构,熟悉类型判断与转换方法熟练应用条件判断、循环、运算符等控制流程和逻辑处理复杂问题熟悉文本处理和正则表达式的关键技能,有效进行字符串操作和模式匹配熟练使用函数、类、高阶函数等实现代码模块化封装,提升代码重用性和维护性灵活应用Pandas库进行常见的数据处理和分析工作2.1Python基础Python解释器的作用声明编码:设置文件字符编码缩进与执行域:代码结构的重要性优雅换行:处理长语句的技巧注释的力量:单行和多行注释的应用命名与赋值:变量规则和赋值方法2.1Python基础Python解释器的作用含义:解释并执行Python文件的程序基本语法:使用#!引导Python解释器的具体路径语法位置:脚本的第一行#!/usr/bin/python2.1Python基础声明编码:设置文件字符编码含义:用于指定Python解释器读取文件时的编码规则基本语法:例如,声明中文编码可用语法位置:如果首行是Python解释器信息,那么编码就在第二行;否则编码应该在首行#coding=<encodingname>或者#-*-coding:<encodingname>-*-“#coding=utf-8”或“#-*-coding:utf-8-*-”。2.1Python基础缩进与执行域:代码结构的重要性用途:通过不同层次的缩进实现功能范围的界定基本语法:一般上,在Python中以4个英文空格为单位实现不同层级的缩进,且不同层级的缩进量必须相同示例(伪代码):如果a>5:#层级1

打印a>5#层级2否则:#层级1

打印a<5#层级22.1Python基础优雅换行:处理长语句的技巧print(‘这是一个条非常非常非常非常非常非常非常非常非常很长很长很长很长的语句’)#未断行print('这是一个条非常非常非常非常非常非常非常非常非常\很长很长很长很长的语句‘)#断行用途:为提高可读性,可将过长语句分为多行长度建议:一般每行长度不超过79或80个字符(注意:该长度不是必须的,只是建议值)用法:使用反斜杠\断行,示例:2.1Python基础注释的力量:单行和多行注释的应用用途:注释是编写代码时用于解释程序特定部分用途、功能或注意事项的文本除极简单的代码外,大部分程序都应包含注释。注释可分为单行注释和多行注释。2.1Python基础注释的力量:单行和多行注释的应用单行注释单行注释用于解释特定语句或行,使用#符号。例如:print('LearnPython')#打印输出字符串——这里是注释信息2.1Python基础注释的力量:单行和多行注释的应用多行注释多行注释适用于解释复杂功能或模块化代码,如函数、类。使用三个单引号'''或三个双引号"""包围注释内容。例如:'''这是多行注释第一行这是多行注释第二行'''print('LearnPython')2.1Python基础命名与赋值:变量规则和赋值方法命名规则(1)变量名可由字母、数字、下划线组成,但不能以数字开头。(2)变量名不得使用Python关键字,如if、while、enumerate、true等。(3)变量名区分大小写,如a=1和A=1代表不同变量。(4)推荐使用行业通用且有意义的变量名,以便理解其含义。2.1Python基础命名与赋值:变量规则和赋值方法变量赋值变量赋值使用等号=。左侧为变量名,右侧为赋予的值。任何对象都可赋值给变量,包括数字、字符串、日期、数组、矩阵等。例如:is_man=1is_woman=False2.2数据类型数字型数据:整数型、浮点型、布尔型和复数型字符串型数据:文本处理基础日期型数据:时间的表示与操作数据类型的多样性:判断与转换技巧2.2数据类型数字型数据:整数型、浮点型、布尔型和复数型Python的数字类型主要包括整数型、浮点型、布尔型和复数型。a1=2#整数型,等价于int(2)a2=2.1#浮点型,等价于float(2.1)a3=True#布尔型,等价于bool(1)a4=complex(1)#复数型其中,a1定义为整数型、a2为浮点型、a3为布尔型、a4为复数型。(1)整数型(a1)可包含正数、负数和0。(2)浮点型(a2)通常为双精度,取决于底层机器架构。(3)布尔型(a3)只包含True和False两种值,在计算时True视为1,False视为0。(4)复数型(a4)通常用complex方法创建,以一对双精度浮点数表示复数值,使用较少。2.2数据类型字符串型数据:文本处理基础字符串以字符为处理单位,而bytes类型以字节为单位。下面的a5和a6分别是字符串和bytes类型的实例。a5='字符串'#字符串a6=bytes('字符串','utf-8')#bytes(1)字符串(a5)由Unicode码位值组成,范围是U+0000至U+10FFFF,可表示各种字符,如中文、英文、标点符号等。字符串可通过单引号、双引号或三引号创建。例如,a5='字符串'、a5="字符串"、a5="""字符串"""和a5='''字符串'''是等价效果。(2)bytes类型(a6)可通过bytes()方法或前缀b加字符串创建,bytes方法可指定编码,如utf-8,而b''要求字符串必须是ASCII字符串。2.2数据类型日期型数据:时间的表示与操作日期数据不是Python内置类型,而是标准库time和datetime中的类型。此外,calendar库也可操作日期时间。由于日期在事务型数据中常见,这里介绍常用的日期类型,以datetime库为例。2.2数据类型日期型数据:时间的表示与操作1fromdatetimeimportdatetime2date_info=datetime.today().date().strftime('%Y-%m-%d')3time_info=datetime.today().time().strftime('%H:%M:%S')4Datetime_info=datetime.now().strftime('%Y-%m-%d%H:%M:%S')5Datetimestamp_info=datetime.now().strftime('%Y-%m-%d%H:%M:%S%f')6Datetimestamp_info2=datetime.now().timestamp()第1行导入datetime模块。代码2、3、4、5、6分别获取当前日期、时间、日期时间、两种时间戳格式。(1)Date:由代码2实现的日期,格式为YYYY-MM-DD。(2)Time:由代码3实现的时间,格式为HH:MM:SS。(3)Datetime:由代码4实现的日期时间,格式为YYYY-MM-DDHH:MM:SS。(4)Datetimestamp:代码5和6实现的时间戳,分别为日期时间毫秒级格式和Unix时间戳。2.2数据类型数据类型的多样性:判断与转换技巧判断数据类型可使用type或isinstance方法。(1)type(object)直接返回对象的类型。(2)isinstance(object,class_or_tuple)判断对象是否为指定类型或元组中的类型,返回布尔值。例如:数据类型的判断方法type(a5)#使用type方法判断类型,返回strisinstance(a5,(int,bytes))#使用isinstance方法判断类型是否为int或bytes类型,返回False2.2数据类型数据类型的多样性:判断与转换技巧字符串str和bytes类型相互转换str_to_bytes=str.encode(a5)#将字符串转换为bytes类型,默认utf-8编码bytes_to_str=bytes.decode(str_to_bytes)#将bytes解码为字符串,默认utf-8解码2.2数据类型数据类型的多样性:判断与转换技巧字符串str和数字Number类型相互转换a7='1'#定义一个必须能转换为数字的字符串对象str_to_int=int(a7)#使用int方法将字符串转换为整数型str_to_int=float(a7)#使用float方法将字符串转换为浮点型str_to_bool=bool(a7)#使用bool方法将字符串转换为浮点型str_to_complex=complex(a7)#使用complex方法将字符串转换为复数型字符串转换为数字类型的方法2.2数据类型数据类型的多样性:判断与转换技巧字符串str和数字Number类型相互转换int_to_str=str(str_to_int)#使用str方法转换为字符串型数字类型转换为字符串直接使用str方法即可,示例字符串与数字类型相互转换时需注意以下几点:(1)仅能将表示数字的字符串转换为数字类型。例如,字符串'12'可以转换为数字,而'abcd'则不可。(2)字符串转换为布尔型时,空字符串返回False,非空字符串返回True。2.2数据类型数据类型的多样性:判断与转换技巧字符串str与日期类型的相互转换datetime_to_str=datetime.now().strftime('%Y-%m-%d%H:%M:%S')#将当前日期时间格式化为字符串字符串与日期之间的转换涉及两个关键方法:strftime和strptime。strftime用于将日期格式化为字符串,而strptime则将字符串解析为日期对象。日期转字符串:使用datetime对象的strftime方法。这个方法根据给定的格式化字符串将日期对象转换为文本表示。例如:2.2数据类型数据类型的多样性:判断与转换技巧字符串str与日期类型的相互转换str_to_datetime=datetime.strptime(datetime_to_str,'%Y-%m-%d%H:%M:%S')#将字符串解析为日期对象字符串与日期之间的转换涉及两个关键方法:strftime和strptime。strftime用于将日期格式化为字符串,而strptime则将字符串解析为日期对象。字符串转日期:使用datetime模块的strptime方法。该方法根据指定的格式字符串将文本解析为日期对象。例如:2.3数据结构列表:有序数据的集合与推导式元组:不可变的数据集合与推导式字典:键值对的映射与推导式集合:独特元素的集合与推导式数据结构的转换与判断2.3数据结构列表:有序数据的集合与推导式列表是一个有序且可变的集合,允许包含多种数据类型。可变性指列表内元素可以更改,有序性意味着元素有固定的排列顺序。list_example1=[]list_example2=list()list_example3=[1,True,b'bytes',['a','b']]创建列表:使用中括号[]或list()方法2.3数据结构列表:有序数据的集合与推导式列表是一个有序且可变的集合,允许包含多种数据类型。可变性指列表内元素可以更改,有序性意味着元素有固定的排列顺序。values=[1,True,b'bytes',['a','b']]#列表包括4个元素,其中第4个元素为列表。values[3]#获取列表的第四个元素,结果为['a','b']values[-1]#获取列表的最后一个元素,结果为['a','b']values[:2]#获取列表前2个元素,结果为[1,True]values[-3:-1]#获取列表倒数第一个到倒数第3个元素,结果为[True,b'bytes']values[::2]#获取列表中从头开始的间隔1个取一个的元素,结果为[1,b'bytes']values[3][1]#获取列表中低4个元素的第二个值,结果为'b'获取元素:基于索引的元素访问2.3数据结构列表:有序数据的集合与推导式用途方法说明示例追加append(object)追加元素到列表,默认追加在最后,用于追加单个元素In:a=[1,2,3]In:a.append(4)In:aOut:[1,2,3,4]清空clear()清空整个列表In:a=[1,2,3]In:a.clear()In:aOut:[]复制copy()复制(拷贝)列表为新列表In:a=[1,2,3]In:b=a.copy()In:bOut:[1,2,3]列表操作2.3数据结构列表操作用途方法说明示例批量追加extend(iterable)将另外一份列表对象批量追加到列表中,用于列表的扩展In:a=[1,2,3]In:b=[4,5]In:a.extend(b)In:aOut:[1,2,3,4,5]查询值的索引index(value)查询从列表中某个值第一个匹配项的索引值In:a=[1,2,3]In:a.index(2)Out:1插入insert(index,object)将对象插入列表,与append不同的是可指定插入位置In:a=[1,2,3]In:a.insert(1,4)In:aOut:[1,4,2,3]列表操作2.3数据结构列表操作用途方法说明示例按索引删除元素pop(index=-1)移除列表中的一个(默认最后一个)元素,并且返回该元素的值。使用index值指定删除的位置In:a=[1,2,3]In:a.pop()Out:3In:aOut:[1,2]按值删除元素remove(value)移除列表中某个值的第一个匹配项In:a=[1,2,3]In:a.remove(1)In:aOut:[2,3]反转列表reverse()反转列表In:a=[1,2,3]In:a.reverse()In:aOut:[3,2,1]列表操作2.3数据结构列表操作用途方法说明示例排序列表sort(*,key=None,reverse=False)按列表元素大小排序,通过reverse参数可指定倒序排序In:a=[1,3,2]In:a.sort()In:aOut:[1,2,3]查看列表长度len(object)查看列表中有多少个对象In:a=[1,3,2]In:len(a)Out:3列表操作2.3数据结构列表:有序数据的集合与推导式列表推导式:列表推导式是Python中一种高效的数据处理方式,允许元素在列表内部直接进行计算。[i*2foriinrange(5)]#结果为[0,2,4,6,8]示例1:进行简单计算。以下示例从range(5)中取出每个i并乘以2并返回结果:defsum(n):returnn+n/2[sum(i)foriinrange(5)]#输出[0.0,1.5,3.0,4.5,6.0]示例2:结合函数计算。在列表推导式中应用该函数,对每个元素进行计算并返回结果2.3数据结构元组:不可变的数据集合与推导式元组是一种不可变的有序集合,可以包含任意类型的数据。与列表相比,元组的主要区别在于其不可变性。tuple_example1=()tuple_example2=tuple()#元组也支持嵌套tuple_example3=(1,True,b'bytes',('a','b'))创建元组:使用小括号()或tuple()函数2.3数据结构元组:不可变的数据集合与推导式用途方法说明示例计数count(value)查看元素的出现次数In:a=(1,2,2,2,3)In:a.count(2)Out:3查看索引index(value)查看特定值的第一次出现的索引位置In:a=(1,2,2,2,3)In:a.index(2)Out:1查看元组长度len(object)查看元组中有多少个对象In:a=(1,2,2,2,3)In:len(a)Out:5元组操作:由于元组的不可变性,它不支持像列表那样的编辑操作(如添加、删除、清空),仅支持查看操作。2.3数据结构元组:不可变的数据集合与推导式用途方法说明示例计数count(value)查看元素的出现次数In:a=(1,2,2,2,3)In:a.count(2)Out:3查看索引index(value)查看特定值的第一次出现的索引位置In:a=(1,2,2,2,3)In:a.index(2)Out:1元组操作:由于元组的不可变性,它不支持像列表那样的编辑操作(如添加、删除、清空),仅支持查看操作。2.3数据结构元组:不可变的数据集合与推导式事实上,元组没有直接的推导式。如果尝试使用与列表类似的推导式,得到的将是一个生成器对象,而非元组本身。例如,执行以下代码:a=(i*2foriinrange(5))#这是一个推导式tuple_result=tuple(a)#将生成器转换为元组查看a的类型(type(a)),会发现其类型是<generatorobject<genexpr>at0x0000000004766390>,这表明a是一个生成器对象,而不是元组。要将这个生成器对象转换为元组或列表,可以使用tuple或list函数。例如:2.3数据结构字典:键值对的映射与推导式字典是一个可变集合,以键值对(Key:Value)形式存储数据。例如,将'王守城'的语文成绩表示为:{'王守城':99}。dict_example1={1:'a'}

dict_example2=dict([(1,'a')])创建字典:使用大括号{}或dict()函数字典的键必须是不可变类型,如字符串或元组,而值可以是任意类型,包括字典本身,允许嵌套。例如dict_example3={'tony':98,'lucy':{'firstname':'li'}}2.3数据结构字典:键值对的映射与推导式字典是一个可变集合,以键值对(Key:Value)形式存储数据。例如,将'王守城'的语文成绩表示为:{'王守城':99}。values={'tony':98,'lucy':{'firstname':'li'}}#包含嵌套字典的字典values['tony']#获取字典中Key为tony的值,结果为98values['lucy']['firstname']#获取字典中Key为lucy的值,再从值中找到Key为firstname的值,结果为'li'values.get('tony')#使用字典的get方法获取Key为tony的值,结果为98values.keys()#使用字典的keys方法获取所有的key值,结果为dict_keys(['tony','lucy']),该类型可使用list转换为列表values.values()#使用字典的values方法获取values的值,结果为dict_values([98,{'firstname':'li'}]),该类型可使用list转换为列表values.items()#使用字典的items方法获取所有的键值对组合,结果为dict_items([('tony',98),('lucy',{'firstname':'li'})])获取元素:基于键,不同于列表或元组的索引访问2.3数据结构字典:键值对的映射与推导式用途方法说明示例删除所有元素clear()删除字典内所有元素In:a={'a':1,'b':2}In:a.clear()复制copy()复制字典对象In:a={'a':1,'b':2}In:b=a.copy()In:bOut:{'a':1,'b':2}查看索引setdefault(key,default=None)如果Key不存在与字典中,则设置默认值,与get方法类似In:a={'a':1,'b':2}In:a.setdefault('c',0)In:aOut:{'a':1,'b':2,'c':0}字典操作2.3数据结构字典:键值对的映射与推导式用途方法说明示例更新字典update(dict)将另一个字典中的信息按key更新到现有字典中In:a={'a':1,'b':2}In:b={'a':'fromb'}In:a.update(b)In:aOut:{'a':'fromb','b':2}删除对应的key的值pop(key,[default])删除字典给定键key所对应的值,返回值为被删除的值。如果key不存在,则返回default值。In:a={'a':1,'b':2}In:a.pop('a')Out:1In:aOut:{'b':2}字典操作2.3数据结构字典:键值对的映射与推导式字典推导式是一种高效快速创建和填充字典的方法。以下是一个字典推导式的示例:keys=(str(i*i)foriinrange(3))#通过元组推导式生成包含Value值的生成器values=[i+1foriinrange(3)]#列表推导式生成包含Key值的列表dict_final={k:vfork,vinzip(keys,values)}#通过字典推导式调用上述两个对象生成字典,其结果为:{'0':1,'1':2,'4':3}2.3数据结构集合:独特元素的集合与推导式集合是Python中的一个基本数据结构,特点是包含无序且唯一的元素。与其他数据结构相比,集合的主要特性是元素的不重复性。set_example1={1,2,3}set_example2=set([1,2,3])创建集合:使用大括号{}或set()函数2.3数据结构集合:独特元素的集合与推导式用途方法说明示例增加元素add(object)向集合内增加一个元素In:a={1,2,3}In:a.add(4)In:aOut:{1,2,3,4}移除所有元素clear()移除集合内的所有元素In:a={1,2,3}In:a.clear()In:aOut:set()复制集合copy()复制一个集合In:a={1,2,3}In:b=a.copy()In:bOut:{1,2,3}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式用途方法说明示例增加元素add(object)向集合内增加一个元素In:a={1,2,3}In:a.add(4)In:aOut:{1,2,3,4}移除所有元素clear()移除集合内的所有元素In:a={1,2,3}In:a.clear()In:aOut:set()复制集合copy()复制一个集合In:a={1,2,3}In:b=a.copy()In:bOut:{1,2,3}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式用途方法说明示例查找集合差异元素difference(set)查找两个集合的差异元素In:a={1,2,3}In:b={1,2}In:a.difference(b)Out:3删除相同元素difference_update(set)从一个集合上删除两个集合中的相同的元素In:a={1,2,3}In:b={2,4}In:a.difference_update(b)In:aOut:{1,3}删除元素discard(object)删除集合中的元素In:a={1,2,3}In:a.discard(2)In:aOut:{1,3}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式用途方法说明示例取交集intersection(set)取两个集合交集In:a={1,2,3}In:b={2,4}In:ersection(b)Out:{2}删除不同元素intersection_update(set)从一个集合上删除两个集合中的不相同的元素In:a={1,2,3}In:b={2,4}In:ersection_update(b)Out:{2}删除元素remove(object)元素必须在集合中In:a={1,2,3}In:a.remove(1)In:aOut:{2,3}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式用途方法说明示例取不重复集合symmetric_difference()返回两个集合中不重复的元素的集合In:a={1,2,3}In:b={2,4}In:a.symmetric_difference(b)Out:{1,3,4}删除重复元素并添加不重复元素symmetric_difference_update()删除两个集合中重复元素并将不重复元素添加到集合In:a={1,2,3}In:b={2,4}In:a.symmetric_difference_update(b)In:aOut:{1,3,4}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式用途方法说明示例取并集union(set)取两个集合的并集In:a={1,2,3}In:b={2,4}In:a.union(b)Out:{1,2,3,4}添加集合update(set)向一个集合中添加另一个集合In:a={1,2,3}In:b={2,4}In:a.update(b)In:aOut:{1,2,3,4}集合操作:集合不支持通过索引或键访问单个元素,但适用于执行集合间的比较和组合操作。2.3数据结构集合:独特元素的集合与推导式集合推导式的语法类似于列表推导式。例如:a={iforiinrange(5)}#a的值为{0,1,2,3,4}2.3数据结构数据结构的转换与判断判断数据结构可使用type或isinstance方法。(1)type(object)直接返回对象的类型。(2)isinstance(object,class_or_tuple)判断对象是否为指定类型或元组中的类型,返回布尔值。数据结构的判断方法2.3数据结构数据结构的转换与判断列表和元组之间的转换直接使用list或tuple函数。例如,定义列表a=['1','2','3'],使用tuple(a)可转换为元组('1','2','3')。列表和数组转换列表和元组可直接使用set函数转换为集合。例如,定义元组a=('1','2','1'),使用set(a)转换为集合得到{'1','2'}。注意:在转换过程中,集合会去除重复的元素。列表、元组和集合的转换2.4条件与判断单层条件判断:if语句的应用嵌套条件判断:多层if语句的构建逻辑操作:and、or的灵活运用多条件比较:链式比较、all和any的技巧条件的赋值:基于条件表达式的变量更新2.4条件与判断单层条件判断:if语句的应用单层条件判断使用if语句实现。初始条件使用if定义,中间的条件用elif(如果存在),最后的默认情形使用else。这种结构适用于简单的逻辑分支。a=1#定义一个变量对象ifa==0:#判断a是否为0,如果条件为真(为真的情况下返回结果True)

print('a=0')#打印a=0else:#如果a不为0print('a!=0')#打印a!=02.4条件与判断嵌套条件判断:多层if语句的构建复杂逻辑可能需要嵌套条件判断。在任何if、elif或else块内,都可以包含另一个if条件判断。这样可以处理更复杂的情况。示例如下:a=1#定义了一个变量对象a=1ifa==0:#判断a是否为0,如果条件为真(为真的情况下返回结果True)

print('a=0')#打印a=0elifa>0:#判断a是否大于0,如果条件为真

ifa<=5:#判断a是否小于等于5,如果条件为真

print('a>0且a<=5')#打印a>0且a<=5else:#判断a大于5,如果条件为真

print('a>5')#打印a>5else:#其他情况下

print('a<0')#打印a<02.4条件与判断逻辑操作:and、or的灵活运用在条件判断中,可以使用and和or来组合多个条件。and要求所有条件同时满足,or只需任一条件满足。例如,将条件“a>0”和“a<=5”结合,可以写成:a=1#定义了一个变量对象a=1ifa==0:#判断a是否为0,如果条件为真(为真的情况下返回结果True)

print('a=0')#打印a=0elifa>0anda<=5:#判断a大于0且a小于等于5,如果条件为真

print('a>0且a<=5')#打印a>0且a<=5elifa>5:#判断a大于5,如果条件为真

print('a>5')#打印a>5else:#其他情况下

print('a<0')#打印a<02.4条件与判断多条件比较:链式比较、all和any的技巧链式比较链式比较允许进行一系列的比较操作。例如:表达式a>0anda<=5可以被简化为0<a<=52.4条件与判断多条件比较:链式比较、all和any的技巧all和any的应用当涉及多个条件判断时,使用多个and或or可能显得冗长。此时,all和any函数提供了更简洁的解决方案:(1)all:当所有条件都为真时返回True,否则返回False。例如,all((a>0,b<2,c==8))检查所有条件是否同时满足。(2)any:只要有一个条件为真即返回True,全部为假时返回False。例如,any((a>0,b<2,c==8))检查是否至少有一个条件满足。2.4条件与判断条件的赋值:基于条件表达式的变量更新条件赋值是一种在赋值过程中同时进行条件判断的方法,适用于赋值逻辑较为复杂的情况。它使用条件表达式(三元运算符)来决定赋值内容。例如:a=1#创建变量a=1b=aifa>1else0#根据a的值做判断,当a>1时为b赋值1;否则b赋值02.5循环与控制流程for循环与条件表达式的搭配while循环与条件的判断循环嵌套:处理复杂问题无限循环:正确使用与避免死循环控制循环:break和continue的使用2.5循环与控制流程for循环与条件表达式的搭配for循环用于遍历序列对象,如列表、元组、字典等。例如:foriin[1,2,3]:#从列表[1,2,3]中循环取出每个值print(i)#打印输出对应值for循环经常与条件表达式结合使用以实现复杂功能。例如:foriin[1,2,3]:#从列表[1,2,3]中循环取出每个值

ifi<=2:#新增了对i的判断,当i<=2时执行下面的代码

print(i)#打印输出对应值2.5循环与控制流程while循环与条件的判断while循环基于条件来控制循环的执行。与for循环不同,它不直接迭代序列对象。例如:i=1#定义变量对象1whilei<=2:#使用while循环对i做判断,只有当i<=2时才执行下面的程序print("Good")#打印输出Goodi+=1#对i增加1,表达式也可以写为i=i+12.5循环与控制流程循环嵌套:处理复杂问题循环可嵌套使用,适合处理多层迭代对象。例如:nums=[[11],[21,22]]#定义了一个嵌套列表foriinnums:#外层循环,每次读取nums的一个元素(列表)为iforjini:#内层循环,读取i中的每个元素

print(j)#打印i中的每个元素2.5循环与控制流程无限循环:正确使用与避免死循环while循环可用于创建无限循环,适用于需要持续运行的任务。例如:whileTrue:#while后面的条件为True,意味着每次循环都会调用后面的代码

do_something_here#do_something_here为具体实现逻辑注意无限循环应谨慎使用,以防陷入没有退出条件的死循环。通常,应在while循环中设置明确的退出条件,以保证循环在满足特定情况时能够终止。这些条件可能包括达到某个数值阈值、找到特定字符串,或者满足特定状态等。2.5循环与控制流程控制循环:break和continue的使用根据特定条件来控制循环的继续或终止的两种方式:break和continueforiin[1,2,3,4]:#从列表[1,2,3,4]循环读取iifi<2:#判断当i<3结果为真时,执行下面代码print(i)#打印输出ielifi==2:#判断当i为3结果为真时,执行下面代码continue#略过此次循环,继续下一个循环操作else:#在其他情况下break#意味着终止整个循环不再继续执行break用于彻底结束整个循环过程并退出循环体continue则用于仅结束当前的循环迭代,随后继续执行循环的剩余部分2.6运算符算术运算符:数字计算的基础赋值运算符:简化变量赋值比较运算符:衡量数据大小逻辑运算符:处理复杂判断成员与身份:检验元素存在性和对象身份运算优先级:理解运算次序2.6运算符算术运算符:数字计算的基础运算符名称用途示例+加两个数字对象为相加;两个字符串对象为组合。In:'a'+'b'Out:'ab'-减用于单数字前面代表负数;两个数字对象表示相减。In:1–2Out:-1*乘两个数字对象相乘;单个对象重复多次。In:'a'*3Out:'aaa'/除两个数字对象相除In:1/2Out:0.5%取余返回除法的余数,也叫模运算In:1/2Out:1**幂运算返回x的y次幂In:2**4Out:16//取整返回除数向下取整的整数In:1//2Out:02.6运算符赋值运算符:简化变量赋值运算符名称用途示例=简单赋值最简单的赋值方法In:c=a+bIn:cOut:3+=加法赋值将一个对象加一个数字后再赋值In:a+=2#等价于a=a+2In:aOut:4-=减法赋值将一个对象减去一个数字后再赋值In:a-=2#等价于a=a-2In:aOut:0*=乘法赋值将一个对象乘一个数字后再赋值In:a*=2#等价于a=a*2In:aOut:42.6运算符赋值运算符:简化变量赋值运算符名称用途示例/=除法赋值将一个对象除一个数字后再赋值In:a/=2#等价于a=a/2In:aOut:1.0**=幂赋值将一个对象幂运算一个数字后再赋值In:a**=2#等价于a=a**2In:aOut:4//=取整赋值将一个对象取整赋值一个数字后再赋值In:a//=2#等价于a=a//2In:aOut:12.6运算符比较运算符:衡量数据大小运算符名称用途示例==等于比较两个对象是否相等In:a==bOut:False!=不等于比较两个对象是否不相等In:a!=bOut:True>和>=大于或大于等于比较a是否大于或大于等于In:a>=bOut:True<和<=小于或小于等于比较a是否小于或小于等于bIn:a<=bOut:False2.6运算符逻辑运算符:处理复杂判断运算符名称用途示例not非返回相反的逻辑值In:not(a==b)Out:Trueand且a和b同时为真的情况下返回True,否则为FalseIn:a==2andb==1Out:Trueor或a和b有一个为真的情况下返回True,否则为FalseIn:a==2orb==2Out:True2.6运算符成员与身份:检验元素存在性和对象身份运算符名称用途示例in在..中是否在指定序列对象中找到对象In:ainbOut:Truenotin不在…中是否在指定序列对象中找不到对象In:anotinbOut:False运算符名称用途示例is是比较两个对象是否指向同一个存储对象In:aisbOut:Falseisnot不是比较两个对象是否指向不同的存储对象In:aisnotbOut:True2.6运算符运算优先级:理解运算次序(1)算术运算符:幂运算符**(2)算术运算符:乘*、除/、取余%、取整//(3)算术运算符:加法+、减法-(4)比较运算符:小于等于<=、小于<、大于>、大于等于>=(5)比较运算符:等于==、不等于!=(6)赋值运算符:等于=、加等于+=、减等于-=、乘等于*=、除等于/=、幂等于**=、取整等于//=(7)身份运算符:是is、不是isnot(8)成员运算符:在in、不在notin(9)逻辑运算符:非not、且and、或or。除位运算符外,按优先级由高至低排列的运算符:2.7文本处理与正则表达式字符串格式化:控制信息输出字符串执行:动态生成与执行代码内置方法:处理字符串的常见操作正则表达式:强大的模式匹配工具2.7文本处理与正则表达式字符串格式化:控制信息输出字符串格式化的三种格式化方法:使用%格式化字符串使用str.format()格式化字符串使用f-strings格式化字符串2.7文本处理与正则表达式字符串格式化:控制信息输出使用%格式化字符串通过“format%values”的格式传值。“format”是包含%规则的字符串“values”是待插入的值。2.7文本处理与正则表达式字符串格式化:控制信息输出使用%格式化字符串print(‘mynameis%s,age%d,height%.2f,money%5.2e,satisfied%.2f%%’%(‘lucy’,33,183.5,1000000000.0,90.365))#打印输出mynameislucy,age33,height183.50,money1.00e+09,satisfied90.36%符号用途%s格式化为字符串%d格式化为整数%f格式化为浮点数%e格式化为科学计数法来表示浮点数%%格式化为百分号2.7文本处理与正则表达式字符串格式化:控制信息输出使用str.format()格式化字符串str.format方法通过在字符串中插入{}作为占位符,并结合str.format(values)中的值进行格式化。三种传参方式:位置索引传参默认位置传参关键字传参2.7文本处理与正则表达式字符串格式化:控制信息输出使用str.format()格式化字符串print('mynameis{name},age{age},height{height:.2f},money{money:5.2e},satisfied{percent:.2%}'.format(name='lucy',age=33,height=183.5,money=10000000.0,percent=0.90365))#输出结果:mynameislucy,age33,height183.50,money1.00e+07,satisfied90.36%示例:2.7文本处理与正则表达式字符串格式化:控制信息输出使用f-strings格式化字符串F-string方法允许在字符串前添加f字符以便在{}内直接插入变量。示例:name='lucy'#定义name变量age=33#定义age变量height=183.5#定义height变量money=10000000.0#定义money变量percent=0.90365#定义percent变量print(f'mynameis{name},age{age},height{height:.2f},money{money:5.2e},satisfied{percent:.2%}')#在字符串前的f表示这是一个f-strings对象,然后在{}中传入参数即可2.7文本处理与正则表达式字符串执行:动态生成与执行代码eval执行字符串表达式c,d='1+2','1==2'#定义了一个两个字符串变量对象c和dprint(eval(c))#调用eval方法解析字符串表达式c,并打印输出结果为3print(eval(d))#调用eval方法解析字符串表达式d,并打印输出结果为False示例:2.7文本处理与正则表达式字符串执行:动态生成与执行代码compile编译执行复杂功能com_strs='''#定义了一个字符串对象com_strsi=1#定义了变量i为1ifi>0:#判断i是否大于0,如果为真则执行下面的过程print("Good")#打印输出Good'''com_str=compile(com_strs,'','exec')#使用compile方法将该字符串进行编译exec(com_str)#使用exec方法执行编译好的对象,执行后得到结果为Good示例:2.7文本处理与正则表达式内置方法:处理字符串的常见操作获取字符串子集print(s[:4])#获取前4个字符串,代码返回thisprint(s[5:8])#获取第6到第8个字符,代码返回isprint(s[-8:])#获取最后8个字符串,代码返回python!示例:2.7文本处理与正则表达式内置方法:处理字符串的常见操作拼接与拆分字符串print(s+'a')#拼接字符串s和'a',代码返回thisispython!aprint(''.join([s,'b']))#拼接列表,代码返回thisispython!bprint(s.split())#默认按空格分隔,默认去除所有的空格,代码返回拆分后的列表['this','is','python!']print(s.split(''))#按指定字符空格分割字符串,代码返回拆分后的列表['this','is','python!',''],注意列表中包含空字符串不会默认去除示例:2.7文本处理与正则表达式内置方法:处理字符串的常见操作大小写处理print(s.upper())#字符串全部大写,代码返回THISISPYTHON!print(s.lower())#字符串全部小写,代码返回thisispython!print(s.swapcase())#字符串大小写互换,代码返回THISISPYTHON!print(s.capitalize())#字符串首字母大写,其余小写,代码返回Thisispython!print(s.title())#字符串首字母大写,代码返回ThisIsPython!示例:2.7文本处理与正则表达式内置方法:处理字符串的常见操作搜索和替换print(s.find('is'))#搜索字符串is,没有返回-1,代码返回为2print(s.find('is',1,2))#从字符串的对应索引的[1:2]子集中查找is,代码返回-1print(s.count('is'))#统计字符串is出现的次数,代码返回2print(s.rfind('is'))#从右边开始查找is,代码返回5print(s.replace('python','python3'))#用python3替换python,代码返回thisispython3!print(s.replace('python','python3',1))#功能返回结果同上,指定只替换1次示例:2.7文本处理与正则表达式内置方法:处理字符串的常见操作去除空格print(s.strip())#只去除两边空格,代码返回结果thisispython!print(s.lstrip())#只去除左边空格,代码返回结果thisispython!print(s.rstrip())#只去除右边空格,代码返回结果thisispython!print(s.replace('',''))#通过替换方法去除所有的空格,代码返回结果thisispython!示例:2.7文本处理与正则表达式内置方法:处理字符串的常见操作字符串判断print(s.startswith('python'))#是否以'python'开头,代码返回结果Falseprint(s.endswith(''))#是否以空格结尾,代码返回结果Trueprint(s.isalnum())#是否全为字母或数字,代码返回结果Falseprint(s.isalpha())#是否全为字母,代码返回结果Falseprint(s.isdigit())#是否全为数字,数字的范围包括Unicode数字、byte数字(单字节)、全角数字(双字节),代码返回结果Falseprint(s.isdecimal())#是否全为数字,数字的范围包括Unicode数字、全角数字(双字节),代码返回结果Falseprint(s.isnumeric())#是否全为数字,数字的范围包括Unicode数字、全角数字(双字节)、罗马数字、汉字数字,代码返回结果Falseprint(s.islower())#是否全为小写,代码返回结果Trueprint(s.isupper())#是否全为大写,代码返回结果Falseprint(s.istitle())#判断首字母是否为大写,代码返回结果Falseprint(s.isspace())#判断字符是否为空格,代码返回结果False示例:2.7文本处理与正则表达式正则表达式:强大的模式匹配工具正则表达式的语法规则:匹配对象规则运算符说明示例.表示任意字符对象'pyt.on'表示pyt和on中间可以有任意一个字符,因此'python'能匹配到该模式\表示转义字符,将正则表达式中的特殊符号转义为普通字符'pyt\.on'表示模式本身就是'pyt.on',其中的.不再表示任意字符对象[]表示字符规则的集合'[0-3]'表示规则包含从0-3共4个数字\d固定用法,表示任意十进制数字'\d',相当于[0-9]\D固定用法,表示任意非数字字符'\D',相当于[^0-9]\s固定用法,表示任意空白字符'\D',相当于[\t\n\r\f\v]\S固定用法,表示任意非空白字符'\D',相当于[^\t\n\r\f\v]\w固定用法,表示任意数字和字母'\w',相当于[a-zA-Z0-9]\W固定用法,表示任意非数字和字母'\W',相当于[^a-zA-Z0-9]2.7文本处理与正则表达式正则表达式:强大的模式匹配工具正则表达式的语法规则:匹配次数规则运算符说明示例*表示匹配前一个字符0到无限次'.*'表示任意字符出现无限次+表示匹配前一个字符1到无限次'\d+'表示任意数字出现1到无限次?表示匹配前一个字符0到1次'\D?'表示任意非数字出现0到1次{m}表示匹配前一个字符m次'\w{2}'表示任意数字和字母出现2次{m,n}表示匹配前一个字符m到n次'\W{2,5}'表示任意非数字和字母出现2到5次2.7文本处理与正则表达式正则表达式:强大的模式匹配工具正则表达式的语法规则:匹配模式规则运算符说明示例^表示字符串匹配开头规则'^py'表示字符串以py开头,因此'python'能匹配到该模式$表示字符串匹配结尾规则'on$'表示字符串以on结尾,因此'python'能匹配到该模式|表示多个规则中只要匹配一个规则即可'[!|,]'表示规则包括感叹号和逗号,匹配任意一个字符即可2.7文本处理与正则表达式正则表达式:强大的模式匹配工具使用re.match返回匹配群组re.match函数用于根据指定模式返回匹配的群组对象。示例:importrea="ID12high90345cd520190330"#定义一个字符串re_match=re.match('^ID(\d+)(\D*)(\d*)(\w{3})(\d{8})',a)#建立匹配模式print(re_match.groups())#打印被匹配的字符串群组,结果为('12','high','90345','cd5','20190330')print(re_match.groups()[1])#打印群组中的特定对象,结果为high2.7文本处理与正则表达式正则表达式:强大的模式匹配工具使用re.findall返回匹配列表re.findall函数用于查找符合特定规则的字符串,并以列表形式返回。示例:importrea="ID12high90345cd520190330"#字符串中包含数字和字母print(re.findall('\d+',a))#打印匹配出现1或无限次的数字,结果为['12','90345','520190330']print(re.findall('\d{2,3}',a))#打印匹配限制在出现2到3次的数字,结果为['12','903','45','520','190','330']2.7文本处理与正则表达式正则表达式:强大的模式匹配工具使用re.split拆分字符串与字符串的split方法只能针对单一分隔符不同,正则表达式re.split可以指定多种分隔符进行拆分。importre#导入re库strs='thisis!a,string'#定义一个字符串,分隔符包括空格、感叹号、逗号re.split('[|!|,]',strs)#使用正则表达式写出三个分隔符规则,分别是空格、感叹号和逗号,代码执行后返回结果为['this','is','a','string']2.7文本处理与正则表达式正则表达式:强大的模式匹配工具使用re.sub替换字符串尽管字符串的replace方法能进行替换操作,但它仅限于固定对象的替换。正则表达式则可以实现基于规则的替换。importre#导入re库strs='this11_is12,python3!'#定义一个字符串,包括空格、数字、英文print(re.sub('\d{2}|,|_','',strs))#将2位数字、逗号和_替换为空格,打印结果为thisispython3!print(re.sub('\D{4,10}','A',strs))#将长度为4-10的非数字字符串替换为A,打印结果为A11_is12A3!2.8功能的模块化封装函数的威力:便于重用与可维护匿名函数:简洁的功能定义方式类的构建:面向对象编程的基础2.8功能的模块化封装函数的威力:便于重用与可维护函数要素:函数名、参数、功能体和返回值等deffunction_name(argument_list):#使用def方法定义,function_name是函数名;括号内的argument_list是参数列表,多个参数以逗号分隔expression#expression是函数功能主体returnexpression#expression为函数可返回的结果,其中expression可以是一个变量对象,也可以是一个表达式,也可以为空定义模式2.8功能的模块化封装函数的威力:便于重用与可维护函数要素:函数名、参数、功能体和返回值等defagg_sum(x,y,z=5):#定义一个名为agg_sum的函数,z=5表示z如果没有传值,则默认为5'''该功能实现了两个数字求和'''#函数的文档字符串(DocStrings),它用来做函数的功能、参数、实现、返回、错误、注意事项和示例等做详细说明sum=x+y+z#常规功能,实现了对3个数求和returnsum#使用return方法将计算结果sum返回,return不是必须的,但作为一个被调用的功能模块,一般都会返回特定结果定义示例2.8功能的模块化封装函数的威力:便于重用与可维护函数要素:函数名、参数、功能体和返回值等print(agg_sum(10,20))#将10和20分别传给agg_sum函数,计算结果为35print(agg_sum(10,20,z=10))#将10和20是通过位置默认传给x和y,而z=10则通过关键字的方式传参,z=10也可以直接写10,通过位置的方式传参,计算结果为50调用方式2.8功能的模块化封装匿名函数:简洁的功能定义方式匿名函数要素:单行表达式。lambdaargument_list:expression。定义模式关键字lambda后跟参数列表argument_list,参数间用逗号分隔;冒号之后的expression部分则是函数的实际操作2.8功能的模块化封装匿名函数:简洁的功能定义方式匿名函数要素:单行表达式。agg_sum=lambdax,y,z:x+y+z#定义了一个基于lambda的的功能表达式agg_sum,表达式的参数为x、y、z,这三个参数实现的逻辑是x+y+z定义示例2.8功能的模块化封装匿名函数:简洁的功能定义方式匿名函数要素:单行表达式。print(agg_sum(10,20,10))#调用该表达式并赋值为10、20、10给x、y、z,然后打印输出结果为40使用方式2.8功能的模块化封装类的构建:面向对象编程的基础类函数要素:类名、初始化方法(构造函数)、属性和方法等。classclass_name:#类使用class方法定义,后面的class_name为类的名称def__init__(self,argument_list):#使用函数定义方法,定义一个初始化的函数,其中的__init__为固定名称不可更改,self为固定参数且必须在第一个位置,后续所有的方法都可以通过self获取,argument_list为其他该类用到的参数列表,参数以逗号分隔expression#一般是赋值表达式,用于初始化不同的变量值defmethod(self):#普通函数的定义方式,但self参数是固定的expression#普通函数的功能封装returnexpression#普通函数的返回对象定义模式2.8功能的模块化封装类的构建:面向对象编程的基础定义示例classUser:#定义名为User的类def__init__(self,name,score):#初始化函数中,包含name、score2个参数(self参数为类实例本身),该类内的方法都可以获取该初始化函数中实例化后的值

温馨提示

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

评论

0/150

提交评论