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文件比较示例分享
Jan 10 Python
python目录操作之python遍历文件夹后将结果存储为xml
Jan 27 Python
详解Python中with语句的用法
Apr 15 Python
Python实现文件内容批量追加的方法示例
Aug 29 Python
Python pymongo模块用法示例
Mar 31 Python
pycharm中成功运行图片的配置教程
Oct 28 Python
Python测试模块doctest使用解析
Aug 10 Python
python 一篇文章搞懂装饰器所有用法(建议收藏)
Aug 23 Python
python kafka 多线程消费者&amp;手动提交实例
Dec 21 Python
python实现飞船游戏的纵向移动
Apr 24 Python
python 实现波浪滤镜特效
Dec 02 Python
python接口自动化框架实战
Dec 23 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数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
使用JS取得焦点(focus)元素代码
2014/03/22 Javascript
js简单时间比较的方法
2016/08/02 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
浅谈react-native热更新react-native-pushy集成遇到的问题
2017/09/30 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
JS中Promise函数then的奥秘探究
2018/07/30 Javascript
浅谈layui使用模板引擎动态渲染元素要注意的问题
2019/09/14 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
python构造icmp echo请求和实现网络探测器功能代码分享
2014/01/10 Python
基于python编写的微博应用
2014/10/17 Python
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
Anaconda3+tensorflow2.0.0+PyCharm安装与环境搭建(图文)
2020/02/18 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
python获取天气接口给指定微信好友发天气预报
2020/12/28 Python
CSS实现进度条和订单进度条的示例
2020/11/05 HTML / CSS
致短跑运动员广播稿
2014/01/09 职场文书
酒店拾金不昧表扬信
2014/01/18 职场文书
《草原的早晨》教学反思
2014/04/08 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
Python实现排序方法常见的四种
2021/07/15 Python
python3 字符串str和bytes相互转换
2022/03/23 Python