python 范儿编程--解析式 中|学习笔记

简介: 快速学习 python 范儿编程--解析式 中

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践 python 范儿编程--解析式 中】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15355


python 范儿编程--解析式 中

 

内容分析:

一、解析式/推导式

二、使用中括号进行列表解析

 

一、解析式/推导式

1、语法格式:

仔细研究一下它的语法格式,外面的话一层可以用大括号,中括号小括号。

分别对应着:大括号的话就是字典或者集合,如果是中括号的话,对应的是基本的数据结构列表,小括号的话就对应着基本的数据结构——元组。这一个表达式里面大家看到没有,它分为这样几部分。这是第一部分 exper ( item ) ,它是元素或者对元素的操作。就是包括它的表达式、运算函数都可以,就是在这个元素上面的各种操作。然后第二部分就是 for 后面的一个 for  in 结构( for  item  in )就是遍历行为。这是可迭代的一个遍历行为。这个 item 要注意,它可能是一个也可能是两个多个。第三部分就是筛选条件。就是说如果有条件的话是可以选择的。可选表示可以有也可以没有。 If 后面是一个条件表达式,可以判断这一个 item 都满足什么条件。最后,就是用括号:小括号中括号大括号,把它括起来,然后就可以得到不同数据结构的对象。这就是解析式的语法格式。

2、例子:

①可以把这个解析式直接放在 print 里面,看到中括号表示它结果是一个列表,所以可以把它叫做列表解析式。然后第一部分是对这个元素的操作,元素是 x , X 的平方。然后第二部分应该是遍历和迭代 for...in 。 for x in range 10,就是0~9,然后没有条件,中括号括起来。应该就是求10以内的数的平方。

执行结果如下:image.gif②元素是 x ,遍历是 x in dir (str),这个str,是 Python 的一个内置函数,是把那些数字的内容转换成字符串, str 是这个字符串,看字符串它里面的内容,因为在Python里面一切都是对象,所以str这个函数也是一个对象,对象是属性和方法,那么dir就显示这个对象里面所有的属性和方法。

image.gif下面显示了一些属性和方法:image.gif第三部分是筛选条件。条件的话如果这个属性和方法里面含有下划线的话,那么就不显示,因为它是 if  _,不在这个 x 里面,也就不含有下划线的。

这也是一个列表解析式。

 

二、使用中括号进行列表解析(即列表解析式)

1、 enumerate 函数:是一个枚举类型,是看一个基本的数据结构里面的内容,就是元素以及其缩影位置。基础知识的话,可以看看这份资料里面的第一部分,第二部分,然后了解一下enumerate 的使用。这个函数经常用,是非常重要的,我们的任务是把一个 list 列表里面的一些元素的位置,它的缩影号找出来,然后更新原来的这个 list 。

2、例子:

这里有一个list,然后里面有这样一些名字,然后输出一下,用 enumerate 。然后把这个列表放在里,然后后面,一个是看这个类型,一个是看它里面的元素。那么类型是一个 enumerate class 。它里面的元素是一个对象,没有直接显示内容。那么要显示这个,enumerate 它的内容可以用这样的方法:

image.gif因为 enumerate 它是返回两个值,一个是缩影位置,一个是元素,所以 for 后面可以给两个变量,一个是 id x 它的缩影位置,一个是元素,然后 in enumerate上面那个列表,下面用一个格式化输出。格式化输出里面是在刚刚那个列表,然后那个位置,然后它的值是改动了的。用两个占位符一个是0,一个是1。在大括号里面,然后这两个0和1等于占了个位置。用后面这个format后面的这个内容去给它替换掉,然后把它变成一个字符串,所以这是一个字符串格式化的一种方法,可以达到一个好的输出效果。format是等于是这个字符串里面的一个函数,然后里面就是把 id x 放在0的位置, enumerate 放在1的位置,然后再输出一下。

image.gif上面列表赋值要先运行一下,这个列表给改变了,变成了就是每一个内容的话是一个缩影,位置,然后m后面跟着他一个元素值,这样一个操作的话通过上面这串代码可以实现。

image.gif如果用刚刚学到列表解析式来实现的话,定义一个列表跟刚刚那个是基本上是一样的内容,然后自定义函数,这个函数里面传回两个值,一个是缩影位置一个是元素,然后返回一个格式化的一个字符串,然后下面再输出一下,输出的时候调这个函数,然后传两个值。然后这两个是在哪里面呢?是 for 一个迭代。然后是在这个 enumerate 这个 test 里面,然后中括号里面是表示是列表解析式。列表解析式里面第一部分就是元素或者元素的操作,可以用函数操作它,第二部分是一个遍历和迭代 for in ,然后这个后面是没有条件的。然后看一下这个结果 print 的时候也用了一个format的一个格式化输出,这个print是没有用上面的函数,直接就是用这个列表解析式来做的,上面呢,做了一个函数的,有两个print。

image.gif执行后结果相同:

image.gif有了这个列表解析式,对 Python 的一些数据进行处理的话,就很方便了,功能很强大。

3、可迭代的对象 Iterable (里面的元素可以遍历)及数据类型检查(在上面用了一个type观察变量的类型,建议用 isinstance 方法检查类型更好。)

⑴先导入一个包collection,它是个集合,观察它是不是可迭代,所以用 isintance Hello world,这是一个字符串,字符串是一个元组,是可以迭代的,判断他是不是集合里面一个可迭代的对象。那如果是的话它就处,那么下面的test呢是一个列表,那么也要判断它是不是可迭代的一个对象,那么它也是的,所以这个技巧要了解。

image.gif⑵练习:

image.gif用列表形式,前面字符串里的每个元素和后面字符串的每一个元素合并。中间加一个减号,所以应该是第一个字符串选择元素是 a ,然后字符串的合并是加号,加一个中间连字符减号,再加 b 然后 for 后面遍历。

来看一下这个代码: a + 然后加这个连字符号,再加 b for , for a 和 b 是后面的这个元素,要在里面进行遍历 for a in ABC 里面,然后在 for b in DEF 。所以这种习惯要有。

这个基础知识要给大家补一下,对基础知识加深一下。

image.gif它的结果:结果就是。第一个字符串里面的每个元素和第二个里面的每个元素,然后把它连接起来,用减号连起来。

image.gif

把这个中间的符号减号变成冒号:

image.gif结果是冒号连接的:

image.gif③下面一个是 a:b ,然后 for a in abc for b in DEF ,是用大括号跟上面的大括号一样的,上面大括号表示字典,字典里面一个是 key 。应该这里是拼在一起的,这个不是 key value 。Key 应该是A'。冒号后面对应引号引起来的。现在a冒号对应在一起的,然后在引号里面它等于是一个元素。所以这是一个集合。一个set它不是一个字典。

image.gif④这里去构造一个字典: a:b 然后 for 循环。

image.gif结果是:

image.gif得到的结果是字典,一个 key 一个 value 。但是这个 key 、 value 它最终的结果是只有三个结果。

没有 A : D , A : E , A : F ,它最后只选一个f的元素。

最后大家要思考下这个结果的原因。

相关文章
|
3月前
|
机器学习/深度学习 JSON Java
Java调用Python的5种实用方案:从简单到进阶的全场景解析
在机器学习与大数据融合背景下,Java与Python协同开发成为企业常见需求。本文通过真实案例解析5种主流调用方案,涵盖脚本调用到微服务架构,助力开发者根据业务场景选择最优方案,提升开发效率与系统性能。
916 0
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
316 102
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
211 3
|
2月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
479 3
|
2月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
295 3
|
2月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
302 0
|
2月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
213 0
|
3月前
|
存储 大数据 Unix
Python生成器 vs 迭代器:从内存到代码的深度解析
在Python中,处理大数据或无限序列时,迭代器与生成器可避免内存溢出。迭代器通过`__iter__`和`__next__`手动实现,控制灵活;生成器用`yield`自动实现,代码简洁、内存高效。生成器适合大文件读取、惰性计算等场景,是性能优化的关键工具。
258 2
|
3月前
|
机器学习/深度学习 文字识别 Java
Python实现PDF图片OCR识别:从原理到实战的全流程解析
本文详解2025年Python实现扫描PDF文本提取的四大OCR方案(Tesseract、EasyOCR、PaddleOCR、OCRmyPDF),涵盖环境配置、图像预处理、核心识别与性能优化,结合财务票据、古籍数字化等实战场景,助力高效构建自动化文档处理系统。
878 0
|
2月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。

推荐镜像

更多
  • DNS