python中Lambda表达式详解


Posted in Python onNovember 20, 2019

如果你在学校读的是计算机科学专业,那么可能学过 Lambda 表达式, 不过可能从来没有用过它。如果你不是计算机科学专业,它们看着可能 有点儿陌生(或者只是“曾经学习过的东西”)。在这一节里,虽然我们 不打算深入学习这类函数,但是会用几个例子来演示它们是如何用在网 页抓取中的。

Lambda 表达式本质上就是一个函数,可以作为变量传入另一个函数; 也就是说,一个函数不是定义成 f(x, y),而是可以定义成 f(g(x), y) 或 f(g(x), h(y)) 的形式。 BeautifulSoup 允许我们把特定类型的函数作为参数传入 find_all 函 数。唯一的限制条件是这些函数必须把一个标签对象作为参数并且返回 布尔类型的结果。BeautifulSoup 用这个函数来评估它遇到的每个标签对 象,最后把评估结果为“真”的标签保留,把其他标签剔除。

例如,下面的代码就是获取有两个属性的所有标签:

bs.find_all(lambda tag: len(tag.attrs) == 2)

这里,作为参数传入的函数是 len(tag.attrs) == 2。当该参数为真 时,find_all 函数将返回 tag。即找出带有两个属性的所有标签,如 下所示:

<div class="body" id="content"></div>
<span style="color:red" class="title"></span>

Lambda 函数非常实用,你甚至可以用它来替代现有的 BeautifulSoup 函 数:

bs.find_all(lambda tag: tag.get_text() ==  
'Or maybe he\'s only resting?')

如果不使用 Lambda 函数,代码如下:

bs.find_all('', text='Or maybe he\'s only resting?')

如果你能记住 Lambda 函数的语法,以及如何获取标签的属性,那么你 可能再也不需要记住 BeautifulSoup 的语法了!

由于 Lambda 函数可以是任意返回 True 或者 False 值的函数,你甚至 可以结合使用 Lambda 函数与正则表达式,来查找匹配特定字符串模式 的属性的标签。

以上就是关于python Lambda表达式的相关知识点内容,感谢大家的阅读和对三水点靠木的支持。

Python 相关文章推荐
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
Dec 06 Python
十条建议帮你提高Python编程效率
Feb 16 Python
Python基于pillow判断图片完整性的方法
Sep 18 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
python select.select模块通信全过程解析
Sep 20 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
对python3中, print横向输出的方法详解
Jan 28 Python
解决Python3 被PHP程序调用执行返回乱码的问题
Feb 16 Python
python 模拟贷款卡号生成规则过程解析
Aug 30 Python
Python散点图与折线图绘制过程解析
Nov 30 Python
Pycharm连接gitlab实现过程图解
Sep 01 Python
浅析python 通⽤爬⾍和聚焦爬⾍
Sep 28 Python
TensorFlow索引与切片的实现方法
Nov 20 #Python
50行Python代码实现视频中物体颜色识别和跟踪(必须以红色为例)
Nov 20 #Python
python中必要的名词解释
Nov 20 #Python
python做接口测试的必要性
Nov 20 #Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 #Python
Python脚本操作Excel实现批量替换功能
Nov 20 #Python
详解Python中的format格式化函数的使用方法
Nov 20 #Python
You might like
PHP4在WinXP下IIS和Apache2服务器上的安装实例
2006/10/09 PHP
解析linux下安装memcacheq(mcq)全过程笔记
2013/06/27 PHP
PHP时间戳 strtotime()使用方法和技巧
2013/10/29 PHP
基于php的CMS中展示文章类实例分析
2015/06/18 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
2015/12/18 PHP
php通过文件头判断格式的方法
2016/05/28 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
2007/04/12 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
JavaScript每天必学之数组和对象部分
2016/09/17 Javascript
详解js数组的完全随机排列算法
2016/12/16 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
2017/11/27 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
js实现一个页面多个倒计时的3种方法
2019/02/25 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
javascript合并两个数组最简单的实现方法
2019/09/14 Javascript
layui table复选框禁止某几条勾选的实例
2019/09/20 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
python编程开发之日期操作实例分析
2015/11/13 Python
python解决网站的反爬虫策略总结
2016/10/26 Python
python中的print()输出
2019/04/12 Python
Django 源码WSGI剖析过程详解
2019/08/05 Python
python 计算两个列表的相关系数的实现
2019/08/29 Python
python3.7 利用函数os pandas利用excel对文件名进行归类
2019/09/29 Python
CSS3 transition 实现通知消息轮播条
2020/10/14 HTML / CSS
传媒专业推荐信范文
2013/11/23 职场文书
保护环境倡议书500字
2014/05/19 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
2014年酒店服务员工作总结
2014/12/08 职场文书
经理聘任证明
2015/03/02 职场文书
警告通知
2015/04/25 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
室外天线与收音机天线杆接合方法
2022/04/05 无线电
table不让td文字溢出操作方法
2022/12/24 HTML / CSS