Python进阶语法(一)

2023-11-08

目录

一、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列表推导式

定义:是一种数据处理方式,在python中转化和过滤数据

格式:[表达式 for 迭代变量 in 可迭代对象【if 条件表达式】]

其中【】中的数据可以省略

1.1、使用方法

列表推导式根据for循环语句进行优化,且最终得到一个新的列表

1、优化单层For循环

For循环写法

 列表推导式写法

2、优化双层For循环

For循环写法

 列表推导式写法

3、嵌套写法

For循环写法

 列表推导式写法

 

1.2、列表推导式优点

1.2.1、提升效率

在 Python3 中列表推导式中引入的变量仅仅作用在局部作用域,只在局部起作用,表达式的上下文里的同名变量还可以被正常引用,局部变量并不会影响到它们。

1.2.2、方便转换数据

可以将列表中的数据批量进行转化,并将转化后的数据以新列表情况进行输出

1.2.3、用于过滤数据

通过后面条件表达式对数据进行过滤

 

1.3、推广延申

1.3.1、字典推导式

格式:{键:值 for 迭代变量 in 可迭代对象 [if 条件表达式]}

注意:字典中不会出现同名key,第二次出现时会更新value数值,故无论如何迭代,字典中键仍旧具备唯一性。

1.3.2、元组推导式

格式:(元素 for 迭代变量 in 可迭代对象 [if 条件表达式])

        大家也应该发现了,元组推导式与列表推导式/字典推导式不同,列表推导式/字典推导式按格式书写完后输出为对应的列表和字典,而元组表达式输出的是一个生成器对象,此时如果想令该元组推导式输出一个元组的话,请用tuple(tuple1)来做映射即可

        元组推导式也被称为生成器推导式

1.3.3、集合推导式

格式:{元素 for 迭代变量 in 可迭代对象 [if 条件表达式]}

 注意:集合是无序且不重复的,所以执行过程中会先去重,并且每次运行显示的顺序不同

二、Python三元表达式

定义:在python中,三元表达式是一种语法结构,也被称之为条件表达式。

格式:输出(True) if 判断条件 else 输出(False)

2.1、用法

1、用于if语句简化

原if语句写法

 三元表达式写法

2、用于返回多条语句

If条件语句写法

 三元表达式写法

注意:此时代码返回的数据为元组,元组之间用逗号连接

3、函数中使用三元表达式

4、列表推导式中使用三元表达式

 注意:在列表推导式中使用三元表达式,需要将if条件语句提前,for循环语句推后。

5、lambda中使用三元表达式

6、嵌套场景

 

2.2、扩展用法

语法格式:(表达式为假输出X,表达式为真输出Y)[条件表达式])

          {表达式为假输出X1:Y1,表达式为真输出X2:Y2}[条件表达式]

元组条件表达式:

字典条件表达式:

三、断言

定义:Python断言(python assert)可以理解成简易的if else语句,目的是判断条件表达式是否为真,为真的时候程序继续执行,否则便停止运行,抛出AssertionError。

格式:assert 表达式,[异常打印]

 

四、上下文管理器(with—as)

含义:python中针对文件和数据库操作,都需要在程序执行完毕后进行清理,python继承了一套自动操作,目的是在每次文件或数据库使用完成后,直接自动释放对应资源。可以说,with...as语句实现了自动分配并释放资源。

格式: with 表达式 [as 指定一个变量名]:

                   代码块

                  代码块

[]中可以省略,含义为将前文表达式的结果保存到一个变量中

用途:

用于对文件的操作上,如果不使用上下文管理器,操作是这样的:

 With...as使用后如图所示:(with...as语句是一种python控制流语句,也是简单异常报错语句)

 

五、异常捕获预处理

定义:程序异常或出现BUG状态时,通过异常捕获预处理来实现报错层面的控制

5.1、try......except语句

程序默认执行状态下,出现报错就会直接终止运行,我们用try...except语句实现出现问题提示报错异常,然后继续执行接下来的代码。

不做处理情况下报错中止:

 格式:

 

        用try...except格式修改后得到下图所示,此时程序不会报错,会进入异常处理,处理完后继续程序向下执行。如果try语句中没有出现错误,则except中代码不会执行。

 

        注意:except后面书写的是异常报错对象,只有当try中报错现象和报错对象一致时才会进行异常处理,如果不一致,仍旧会出现错误。如下图所示:

         此时若想解决该问题,则需要在except后面加上对应报错对象即可,如下图所示:

        当然,还有种一劳永逸的方法,放我们不知道具体报错时,可以except后面什么都不写,省略异常对象,直接输出异常处理,如下图所示:

5.2、try......except...else语句

          该语句表示按照顺序进行异常处理,当待检测代码有异常时,如果均未满足前几种异常处理条件,则直接报错结束。若代码没有问题,则执行else下面的正常操作。

格式:

        举个简单的例子,如下图所示:

 

5.3、直接抛出异常语句

       通过except 异常类型 as e语句直接抛出异常,后面的e只是一个变量,可以起名任意名称。

 

5.4、finally语句

       try … except语句也可以与finally语句一同使用,表示最后无论代码是否有异常均执行的代码。共三种情况,如下图所示:

       可看出无论能否匹配的上except和else的处理,都会执行finally后面的操作,该操作完成后才会报错退出。

5.5、常见异常类型

AttributeError 某个对象没有属性

Exception 通用型异常对象

FileNotFoundError 找不到文件

IOError 输入输出异常

IndexError 索引异常

KeyError 键异常

NameError 对象名称异常

SyntaxError 语法错误

TypeError 类型错误

ValueError 值错误

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python进阶语法(一) 的相关文章

随机推荐

  • 利用函数求数组[5,2,99,101,67,77]中的最大值

  • 后台开发工具篇之xampp

    一 解决问题 在进行后台开发时 我们很多时候都需要先在本地编写与调试代码 这就需要我们首先在本地搭建服务器开发环境 但是 搭建过的朋友应该知道 环境的搭建可不是三两步就可以搞定的 举例来说 如果我们要在本地Windows环境中搭建PHP服务
  • 图像预处理——CV

    目录 1 图像预处理 1 1 图像显示与存储原理 1 2 图像增强的目标 1 3 点运算 基于直方图的对比度增强 1 4 形态学处理 1 5 空间域处理 卷积 1 6 卷积的应用 平滑 边缘检测 锐化等 1 7 频率域处理 傅里叶变换 小波
  • 薪资12k,在银行外包做软件测试是一种什么体验...

    背景 本人普通二本本科毕业 4 年 目前是在广州工作 是一家大型的人力外包公司外包到银行的开发人员 这可能也是长期在各大招聘软件上最积极的招聘岗位 从入职到现在已经有四个月了 也大概了解了外包的主要工作情况 也有了一些心得体会 借此机会也简
  • 【解决】NullReferenceException: Object reference not set to an instance of an object

    游戏引擎 Unity 版本 2019 4 6f1 2017版本以上均可 编译平台 Visual Studio 2019 一 问题描述 描述 原 文 报错 NullReferenceException Object reference not
  • IT云运维技术分享

    1 运维体系 1 1 市场对运维的需求 时代发展到今天 社会的生活方式与生产方式的全面的数字化 无论是传统企业还是互联网企业 都在全面上云 这也意味着企业的关键业务乃至 身家性命 都已经全部放在 IT 系统之上 因此企业需要系统足够稳定可靠
  • python37-32_python37.dll文件 免费版

    python37 dll文件是一款非常重要的系统文件 你还在为python37 dll文件缺失出错而苦恼吗 小编推荐你使用这款软件 它可以帮助大家修复因为缺失python37 dll引起的一场和报错 只需要在本站下载压缩包解压后安装在指定文
  • 神经网络-Unet网络

    文章目录 前言 1 seq2seq 编码后解码 2 网络结构 3 特征融合 4 前言 Unet用来做小目标语义分割 优点 网络结构非常简单 大纲目录 2016年特别火 在细胞领域做分割特别好 1 seq2seq 编码后解码 2 网络结构 几
  • H - Hiking trip Gym - 103577H

    题目链接 题意 题意很简单就是模拟一个过程 但是模拟很复杂错了很多次 下面是AC代码 include
  • Unity脚本开发基础

    1 打开工程 Assets中新建文件夹Scripts 在文件夹中右键Create C 创建完毕 双击脚本 打开IDE 注意 类名和脚本名要是一样的 Start函数 在其中的内容会在一开始就被执行 所以一些需要初始化的变量写在其中 Updat
  • GitLab 与 SourceTree的结合使用

    这里写自定义目录标题 为公司分配的GitLab账号 重置密码 为GitLab添加公钥 第一步 创建ssh 第二部 为GitLab添加ssh 下载sourcetree 这里我们点击Bitbucket进行授权登陆 不登陆安装工具会很慢还有可能出
  • MySQL数据库的介绍

    数据库简介 数据库指的是长期存在计算机内 有组织 可共享 大量数据的集合 数据是按照特定的数据模型来组织 存储在数据库中 数据库的好处 1 持久化数据到本地 2 可以实现结构化查询 方便管理 数据库相关概念 DB database 数据库
  • 第二天(八)osg::Object* readObjectFile(const std::string& filename,const ReaderWriter::Options* options)

    目前流程是 osgViewer viewBase frame viewerInit 创建帧事件 并将漫游器与事件和视口相关联 gt osgViewer Viewer ViewerInit gt osgViewer View Init gt
  • whatweb

    Whatweb介绍 Whatweb是一个基于Ruby语言的开源网站指纹识别软件 正如它的名字一样 whatweb能够识别各种关于网站的详细信息包括 CMS类型 博客平台 中间件 web框架模块 网站服务器 脚本类型 JavaScript库
  • flutter 创建插件遇到的两个问题,一:右键Flutter菜单不可用,二:可用后,iOS工程打开没有pods目录。

    今天研究flutter 插件 按照教程 通过android studio 创建 flutter 插件 创建完成后 点击工程右键 弹出菜单中Flutter 项目为灰色 不可用 升级flutter AndroidStudio都未解决 flutt
  • 人工智能数学基础--概率与统计10:离散随机变量的概率函数及常见的二项分布、泊松分布

    一 离散随机变量的概率函数及分布函数 设X为离散随机变量 其全部可能取值为 a1 a2 则 pi P X ai i 1 2 称为X的概率函数 也称为随机变量X的概率分布 设X为随机变量 包括离散和非离散 则函数 P X x F x lt x
  • Google Analytics 统计用户点击和每个页面浏览的用户id

  • python - write() argument must be str, not bytes

    python write argument must be str not bytes 源代码 import requests r requests get https www baidu com img bd logo1 png if r
  • 【满分】【华为OD机试真题2023B卷 JS】计算误码率

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 计算误码率 知识点双指针 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 误码率是最常用的数据通信传输质量指标 它可以理解为 在多少位数据中出现一位差错 移动通信网络中
  • Python进阶语法(一)

    目录 一 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 集合推导式