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的Tornado框架中的日志的方法
May 02 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
Jun 28 Python
利用ctypes提高Python的执行速度
Sep 09 Python
Python探索之Metaclass初步了解
Oct 28 Python
Python使用正则表达式获取网页中所需要的信息
Jan 29 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
Django实现一对多表模型的跨表查询方法
Dec 18 Python
基于Tensorflow高阶读写教程
Feb 10 Python
python实现飞机大战项目
Mar 11 Python
python实现人像动漫化的示例代码
May 17 Python
Python如何绘制日历图和热力图
Aug 07 Python
python中四舍五入的正确打开方式
Jan 18 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 mkdir()定义和用法
2009/01/14 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
javascript 的Document属性和方法集合
2010/01/25 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
javascript 禁用IE工具栏,导航栏等等实现代码
2013/04/01 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
2015/10/13 Javascript
vue.js表格组件开发的实例详解
2016/10/12 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
vue-cli 3.x 配置Axios(proxyTable)跨域代理方法
2018/09/19 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
layui实现三级导航菜单
2019/07/26 Javascript
ES6 Generator基本使用方法示例
2020/06/06 Javascript
js实现跳一跳小游戏
2020/07/31 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
python读写ini文件示例(python读写文件)
2014/03/25 Python
跟老齐学Python之做一个小游戏
2014/09/28 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)
2020/05/17 Python
Python实现在线批量美颜功能过程解析
2020/06/10 Python
不同浏览器对CSS3和HTML5的支持状况
2009/10/31 HTML / CSS
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
区域总监的岗位职责
2013/11/21 职场文书
主持人婚宴答谢词
2014/01/28 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
歌舞青春观后感
2015/06/10 职场文书
2015大一新生军训感言
2015/08/01 职场文书
2016年优秀共青团员事迹材料
2016/02/25 职场文书
MySQL索引失效的典型案例
2021/06/05 MySQL