python编程学习使用管道Pipe编写优化代码


Posted in Python onNovember 20, 2021

我们知道 map 和 filter 是两种有效的 Python 方法来处理可迭代对象。

但是,如果你同时使用 map 和 filter,代码可能看起来很混乱。

python编程学习使用管道Pipe编写优化代码

如果你可以使用管道那不是更好了?像下面这样的方式来处理。

python编程学习使用管道Pipe编写优化代码

Pipe 库可以做到这一点。

什么是管道?

Pipe 是一个 Python 库,可让你在 Python 中使用管道。

管道 (|) 将一种方法的结果传递给另一种方法。

我喜欢 Pipe,因为它使我的代码将多个方法应用于 Python 可迭代对象时看起来更简洁。由于 Pipe 只提供了几个方法,所以学习Pipe也很容易。 在本文中,我将向你展示一些我认为最有用的方法。

要安装Pipe,请输入:

pip install pipe

Where:可迭代对象中的过滤元素

与 SQL 类似,Pipe 的 where 方法也可用于过滤可迭代对象中的元素。

python编程学习使用管道Pipe编写优化代码

Select: 将函数应用于可迭代对象

select方法类似于map方法。

select 将方法应用于可迭代的每个元素。

在下面的代码中,我使用 select 将列表中的每个元素乘以 2。

python编程学习使用管道Pipe编写优化代码

现在,你可能想知道:如果 map 和 filter 具有相同的功能,为什么我们需要 where 和 select 方法?

这是因为你可以使用管道在另一个方法之后插入一个方法。 因此,使用管道消除了嵌套的括号并使代码更具可读性。

python编程学习使用管道Pipe编写优化代码

展开可迭代对象

1、chain方法

使用嵌套的可迭代对象可能会很痛苦。 幸运的是,我们可以使用 chain 来链接一系列可迭代对象。

python编程学习使用管道Pipe编写优化代码

尽管应用 chain 可以使可迭代对象的嵌套较少,我们仍然需要一个更强大的工具。 为了处理深度嵌套的列表,我们可以使用 traverse 代替。

2、traverse:递归展开可迭代对象

traverse 方法可用于递归展开可迭代对象。 你可以使用此方法将深度嵌套的列表转换为平面列表。

python编程学习使用管道Pipe编写优化代码

让我们将此方法与 select 方法集成以获取字典的值并展平列表。

python编程学习使用管道Pipe编写优化代码

这样处理是不是很酷?

将列表中的元素分组

有时,使用特定函数对列表中的元素进行分组可能很有用。 这可以通过 groupby 方法轻松完成。

为了看看这个方法是如何工作的,让我们把一个数字列表变成一个字典,这个字典根据数字是偶数还是奇数来分组。

python编程学习使用管道Pipe编写优化代码

在上面的代码中,我们使用 groupby 将数字分组为偶数组和奇数组。 应用此方法后的输出如下所示:

[('Even', <itertools._grouper at 0x7fbea8030550>),
 ('Odd', <itertools._grouper at 0x7fbea80309a0>)]

接下来,我们使用 select 将元组列表转换为字典列表,其键是元组中的第一个元素,值是元组中的第二个元素。

[{'Even': [2, 4, 6, 8]}, {'Odd': [1, 3, 5, 7, 9]}]

为了只获取大于 2 的值,我们可以在 select 方法中添加 where 方法:

python编程学习使用管道Pipe编写优化代码

dedup 方法删除列表中的重复项

python编程学习使用管道Pipe编写优化代码

这听起来可能并不有趣,因为 set 方法可以做同样的事情。 但是,此方法更灵活,可以让你获取唯一元素。

例如,你可以使用此方法获取一个小于 5 的唯一元素和另一个大于或等于 5 的唯一元素。

python编程学习使用管道Pipe编写优化代码

现在,让我们将此方法与 select 结合起来,从哪里获取具有重复键和 None 值的字典的值。

python编程学习使用管道Pipe编写优化代码

在上面的代码中,我们:

  • 删除具有相同名称的项目
  • 获取计数值
  • 只选择整数值。

在几行代码中,我们可以将多个方法应用于可迭代对象,同时仍然可以保持代码整洁,不是吗?

结论

刚刚我们学习了如何使用管道来保持代码简洁简洁, 我希望这篇文章能让你了解到可迭代对象上的复杂操作其实只需要一行简单的代码。

以上就是python编程学习使用管道Pipe编写优雅代码的详细内容,更多关于Python管道Pipe 编写代码的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
Jan 20 Python
Python闭包思想与用法浅析
Dec 27 Python
Python线程之定位与销毁的实现
Feb 17 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
pyinstaller打包单个exe后无法执行错误的解决方法
Jun 21 Python
Python判断字符串是否xx开始或结尾的示例
Aug 08 Python
Python类反射机制使用实例解析
Dec 30 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
Mar 09 Python
Python中如何引入第三方模块
May 27 Python
python实现PDF中表格转化为Excel的方法
Jun 16 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 Python
python自动化测试通过日志3分钟定位bug
Nov 20 #Python
Python实现位图分割的效果
python脚本框架webpy模板赋值实现
python脚本框架webpy模板控制结构
Nov 20 #Python
python脚本框架webpy的url映射详解
Nov 20 #Python
Pygame Time时间控制的具体使用详解
Nov 17 #Python
Pygame如何使用精灵和碰撞检测
You might like
Base64在线编码解码实现代码 演示与下载
2011/01/08 PHP
php/js获取客户端mac地址的实现代码
2013/07/08 PHP
PHP无限分类(树形类)
2013/09/28 PHP
apache中为php 设置虚拟目录
2014/12/17 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
thinkphp3.x中display方法及show方法的用法实例
2016/05/19 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
解决json日期格式问题的3种方法
2014/02/02 Javascript
jQuery实现边框动态效果的实例代码
2016/09/23 Javascript
AngularJS  双向数据绑定详解简单实例
2016/10/20 Javascript
JavaScript中String对象的方法介绍
2017/01/04 Javascript
如何使node也支持从url加载一个module详解
2018/06/05 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
js计算最大公约数和最小公倍数代码实例
2019/09/11 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
[49:05]OG vs Newbee 2019DOTA2国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
浅谈插入排序算法在Python程序中的实现及简单改进
2016/05/04 Python
Python定时发送天气预报邮件代码实例
2019/09/09 Python
详解Python list和numpy array的存储和读取方法
2019/11/06 Python
python 实现检验33品种数据是否是正态分布
2019/12/09 Python
pycharm双击无响应(打不开问题解决办法)
2020/01/10 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
利用Python中的Xpath实现一个在线汇率转换器
2020/09/09 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
2019史上最全Database工程师题库
2015/12/06 面试题
在校学生职业规划范文
2014/01/08 职场文书
劳动之星获奖感言
2014/02/01 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
2015年感恩节演讲稿(优选篇)
2015/03/20 职场文书
2015年学校党支部工作总结
2015/04/01 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
2015年小学教科研工作总结
2015/07/20 职场文书
基层医务人员三严三实心得体会
2016/01/05 职场文书