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 相关文章推荐
利用ctypes提高Python的执行速度
Sep 09 Python
python实现单向链表详解
Feb 08 Python
Pycharm无法使用已经安装Selenium的解决方法
Oct 13 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
详解用python写一个抽奖程序
May 10 Python
Python Django中间件,中间件函数,全局异常处理操作示例
Nov 08 Python
python已协程方式处理任务实现过程
Dec 27 Python
Python pip配置国内源的方法
Feb 14 Python
django rest framework 自定义返回方式
Jul 12 Python
Python识别验证码的实现示例
Sep 30 Python
python在协程中增加任务实例操作
Feb 28 Python
python 经纬度求两点距离、三点面积操作
Jun 03 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
Dedecms V3.1 生成HTML速度的优化办法
2007/03/18 PHP
php图片的裁剪与缩放生成符合需求的缩略图
2013/01/11 PHP
YUI 读码日记之 YAHOO.lang.is*
2008/03/22 Javascript
Javascript Object.extend
2010/05/18 Javascript
30个精美的jQuery幻灯片效果插件和教程
2011/08/23 Javascript
浅析webapp框架AngularUI的demo
2014/12/21 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
JS获取字符串实际长度(包含汉字)的简单方法
2016/08/11 Javascript
轻松掌握JavaScript代理模式
2016/08/26 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
2016/09/28 Javascript
vue component组件使用方法详解
2017/07/14 Javascript
通过 JS 判断页面是否有滚动条的实现方法
2018/04/05 Javascript
Vue波纹按钮组件制作
2018/04/30 Javascript
微信小程序页面传多个参数跳转页面的实现方法
2019/05/17 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
以911新闻为例演示Python实现数据可视化的教程
2015/04/23 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
python读取图片的方式,以及将图片以三维数组的形式输出方法
2019/07/03 Python
docker-py 用Python调用Docker接口的方法
2019/08/30 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
PyTorch中Tensor的数据类型和运算的使用
2020/09/03 Python
python3.8动态人脸识别的实现示例
2020/09/21 Python
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
C语言面试题
2013/05/19 面试题
Android interview questions
2016/12/25 面试题
横幅标语大全
2014/06/17 职场文书
倡议书格式
2014/08/30 职场文书
大学生党员个人剖析材料
2014/10/08 职场文书
李白故里导游词
2015/02/12 职场文书
音乐之声观后感
2015/06/04 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书