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使用mysql的两种使用方式
Mar 07 Python
用python写扫雷游戏实例代码分享
May 27 Python
Flask web开发处理POST请求实现(登录案例)
Jul 26 Python
Python连接Mssql基础教程之Python库pymssql
Sep 16 Python
python执行scp命令拷贝文件及文件夹到远程主机的目录方法
Jul 08 Python
Pytorch maxpool的ceil_mode用法
Feb 18 Python
pytorch torchvision.ImageFolder的用法介绍
Feb 20 Python
python3 循环读取excel文件并写入json操作
Jul 14 Python
python import 上级目录的导入
Nov 03 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 Python
Python源码解析之List
May 21 Python
Python OpenCV之常用滤波器使用详解
Apr 07 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
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
基于PHP异步执行的常用方式详解
2013/06/03 PHP
解析PHP自带的进位制之间的转换函数
2013/06/08 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
2014/10/13 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
关于javascript document.createDocumentFragment()
2009/04/04 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
JS+CSS实现Li列表隔行换色效果的方法
2015/02/16 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
Javascript中浏览器窗口的基本操作总结
2016/08/18 Javascript
Bootstrap页面标题Page Header的实现方法
2017/03/22 Javascript
js实现Tab选项卡切换效果
2020/07/17 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
微信小程序如何实现全局重新加载
2019/06/05 Javascript
JS动态显示倒计时效果
2019/12/12 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python递归全排列实现方法
2018/08/18 Python
Python中new方法的详解
2019/01/15 Python
详解Python3除法之真除法、截断除法和下取整对比
2019/05/23 Python
python实现文件的备份流程详解
2019/06/18 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
Python中拆分字符串的操作方法
2019/07/23 Python
Python udp网络程序实现发送、接收数据功能示例
2019/12/09 Python
Python 使用office365邮箱的示例
2020/10/29 Python
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
马来西亚在线购物市场:PGMall.my
2019/10/13 全球购物
2013年学期结束动员演讲稿
2014/01/07 职场文书
电子信息工程专业自荐书
2014/06/24 职场文书
四风批评与自我批评发言稿
2014/10/14 职场文书
2016新党章学习心得体会
2016/01/15 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android