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多线程Selenium跨浏览器测试
Apr 01 Python
python excel使用xlutils类库实现追加写功能的方法
May 02 Python
Django 忘记管理员或忘记管理员密码 重设登录密码的方法
May 30 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
selenium + python 获取table数据的示例讲解
Oct 13 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
解决使用PyCharm时无法启动控制台的问题
Jan 19 Python
Django框架orM与自定义SQL语句混合事务控制操作
Jun 27 Python
python 经典数字滤波实例
Dec 16 Python
Python sklearn库实现PCA教程(以鸢尾花分类为例)
Feb 24 Python
什么是python的必选参数
Jun 21 Python
利于python脚本编写可视化nmap和masscan的方法
Dec 29 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
第十四节--命名空间
2006/11/16 PHP
关于在php.ini中添加extension=php_mysqli.dll指令的说明
2007/06/14 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
2013/06/13 PHP
解析php中如何调用用户自定义函数
2013/08/06 PHP
PHP中对缓冲区的控制实现代码
2013/09/29 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
php检查字符串中是否包含7位GSM字符的方法
2015/03/17 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
CodeIgniter记录错误日志的方法全面总结
2016/05/17 PHP
基于Codeigniter框架实现的student信息系统站点动态发布功能详解
2017/03/23 PHP
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
详解Jquery Easyui的验证扩展
2017/01/09 Javascript
详解angularJs中关于ng-class的三种使用方式说明
2017/06/02 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
Node.js API详解之 querystring用法实例分析
2020/04/29 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
Python编程flask使用页面模版的方法
2018/12/28 Python
python使用zip将list转为json的方法
2018/12/31 Python
python提取xml里面的链接源码详解
2019/10/15 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
python中 _、__、__xx__()区别及使用场景
2020/06/30 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
俄罗斯三星品牌商店:Samsungstore
2020/04/05 全球购物
介绍一下Ruby的多线程处理
2013/02/01 面试题
火锅店创业计划书范文
2014/02/02 职场文书
六年级数学教学反思
2014/02/03 职场文书
班级活动策划书
2014/02/06 职场文书
石油工程专业毕业生求职信
2014/04/13 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
房屋维修协议书范本
2014/09/25 职场文书
2015中学教学工作总结
2015/07/22 职场文书
礼仪培训心得体会
2016/01/22 职场文书
详解NumPy中的线性关系与数据修剪压缩
2022/05/25 Python