目录
一、Python列表推导式
1.1、使用方法
1.2、列表推导式优点
1.2.1、提升效率
1.2.2、方便转换数据
1.2.3、用于过滤数据
1.3、推广延申
1.3.1、字典推导式
1.3.2、元组推导式
1.3.3、集合推导式
二、Python三元表达式
2.1、用法
2.2、扩展用法
三、断言
四、上下文管理器(with—as)
五、异常捕获预处理
5.1、try......except语句
5.2、try......except...else语句
5.3、直接抛出异常语句
5.4、finally语句
5.5、常见异常类型
定义:是一种数据处理方式,在python中转化和过滤数据
格式:[表达式 for 迭代变量 in 可迭代对象【if 条件表达式】]
其中【】中的数据可以省略
列表推导式根据for循环语句进行优化,且最终得到一个新的列表
1、优化单层For循环
For循环写法
列表推导式写法
2、优化双层For循环
For循环写法
列表推导式写法
3、嵌套写法
For循环写法
列表推导式写法
在 Python3 中列表推导式中引入的变量仅仅作用在局部作用域,只在局部起作用,表达式的上下文里的同名变量还可以被正常引用,局部变量并不会影响到它们。
可以将列表中的数据批量进行转化,并将转化后的数据以新列表情况进行输出
通过后面条件表达式对数据进行过滤
格式:{键:值 for 迭代变量 in 可迭代对象 [if 条件表达式]}
注意:字典中不会出现同名key,第二次出现时会更新value数值,故无论如何迭代,字典中键仍旧具备唯一性。
格式:(元素 for 迭代变量 in 可迭代对象 [if 条件表达式])
大家也应该发现了,元组推导式与列表推导式/字典推导式不同,列表推导式/字典推导式按格式书写完后输出为对应的列表和字典,而元组表达式输出的是一个生成器对象,此时如果想令该元组推导式输出一个元组的话,请用tuple(tuple1)来做映射即可
元组推导式也被称为生成器推导式
格式:{元素 for 迭代变量 in 可迭代对象 [if 条件表达式]}
注意:集合是无序且不重复的,所以执行过程中会先去重,并且每次运行显示的顺序不同
定义:在python中,三元表达式是一种语法结构,也被称之为条件表达式。
格式:输出(True) if 判断条件 else 输出(False)
1、用于if语句简化
原if语句写法
三元表达式写法
2、用于返回多条语句
If条件语句写法
三元表达式写法
注意:此时代码返回的数据为元组,元组之间用逗号连接
3、函数中使用三元表达式
4、列表推导式中使用三元表达式
注意:在列表推导式中使用三元表达式,需要将if条件语句提前,for循环语句推后。
5、lambda中使用三元表达式
6、嵌套场景
语法格式:(表达式为假输出X,表达式为真输出Y)[条件表达式])
{表达式为假输出X1:Y1,表达式为真输出X2:Y2}[条件表达式]
元组条件表达式:
字典条件表达式:
定义:Python断言(python assert)可以理解成简易的if else语句,目的是判断条件表达式是否为真,为真的时候程序继续执行,否则便停止运行,抛出AssertionError。
格式:assert 表达式,[异常打印]
含义:python中针对文件和数据库操作,都需要在程序执行完毕后进行清理,python继承了一套自动操作,目的是在每次文件或数据库使用完成后,直接自动释放对应资源。可以说,with...as语句实现了自动分配并释放资源。
格式: with 表达式 [as 指定一个变量名]:
代码块
代码块
[]中可以省略,含义为将前文表达式的结果保存到一个变量中
用途:
用于对文件的操作上,如果不使用上下文管理器,操作是这样的:
With...as使用后如图所示:(with...as语句是一种python控制流语句,也是简单异常报错语句)
定义:程序异常或出现BUG状态时,通过异常捕获预处理来实现报错层面的控制
程序默认执行状态下,出现报错就会直接终止运行,我们用try...except语句实现出现问题提示报错异常,然后继续执行接下来的代码。
不做处理情况下报错中止:
格式:
用try...except格式修改后得到下图所示,此时程序不会报错,会进入异常处理,处理完后继续程序向下执行。如果try语句中没有出现错误,则except中代码不会执行。
注意:except后面书写的是异常报错对象,只有当try中报错现象和报错对象一致时才会进行异常处理,如果不一致,仍旧会出现错误。如下图所示:
此时若想解决该问题,则需要在except后面加上对应报错对象即可,如下图所示:
当然,还有种一劳永逸的方法,放我们不知道具体报错时,可以except后面什么都不写,省略异常对象,直接输出异常处理,如下图所示:
该语句表示按照顺序进行异常处理,当待检测代码有异常时,如果均未满足前几种异常处理条件,则直接报错结束。若代码没有问题,则执行else下面的正常操作。
格式:
举个简单的例子,如下图所示:
通过except 异常类型 as e语句直接抛出异常,后面的e只是一个变量,可以起名任意名称。
try … except语句也可以与finally语句一同使用,表示最后无论代码是否有异常均执行的代码。共三种情况,如下图所示:
可看出无论能否匹配的上except和else的处理,都会执行finally后面的操作,该操作完成后才会报错退出。
AttributeError 某个对象没有属性
Exception 通用型异常对象
FileNotFoundError 找不到文件
IOError 输入输出异常
IndexError 索引异常
KeyError 键异常
NameError 对象名称异常
SyntaxError 语法错误
TypeError 类型错误
ValueError 值错误