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在windows和linux下获得本机本地ip地址方法小结
Mar 20 Python
python简单读取大文件的方法
Jul 01 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
详解Python中的动态属性和特性
Apr 07 Python
pycharm: 恢复(reset) 误删文件的方法
Oct 22 Python
Python按钮的响应事件详解
Mar 04 Python
python自定义时钟类、定时任务类
Feb 22 Python
python飞机大战pygame碰撞检测实现方法分析
Dec 17 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
Python正则表达式高级使用方法汇总
Jun 18 Python
如何通过python计算圆周率PI
Nov 11 Python
聊聊Python pandas 中loc函数的使用,及跟iloc的区别说明
Mar 03 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
php 读取shell管道传输过来的内容
2010/03/01 PHP
PHP对象克隆clone用法示例
2016/09/28 PHP
Google Suggest ;-) 基于js的动态下拉菜单
2006/10/11 Javascript
jquery插件validate验证的小例子
2013/05/08 Javascript
JavaScript声明变量时为什么要加var关键字
2014/09/29 Javascript
js实现飞入星星特效代码
2014/10/17 Javascript
node.js中的buffer.Buffer.isEncoding方法使用说明
2014/12/14 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
spirngmvc js传递复杂json参数到controller的实例
2018/03/29 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
一篇文章快速了解Python的GIL
2018/01/12 Python
对python3 中方法各种参数和返回值详解
2018/12/15 Python
python实现简单五子棋游戏
2019/06/18 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
Python 文件数据读写的具体实现
2020/01/24 Python
python获取本周、上周、本月、上月及本季的时间代码实例
2020/09/08 Python
Flask-SocketIO服务端安装及使用代码示例
2020/11/26 Python
用python批量移动文件
2021/01/14 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
兰蔻美国官网:Lancome美国
2017/04/25 全球购物
荷兰天然和有机产品网上商城:BigGreenSmile.nl
2020/07/26 全球购物
J2EE包括哪些技术
2016/11/25 面试题
公司运动会策划方案
2014/05/25 职场文书
镇党政领导班子民主生活会思想汇报
2014/10/11 职场文书
实习生矿工检讨书
2014/10/13 职场文书
检讨书范文1000字
2015/01/28 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
竞选稿之小学班干部
2019/10/31 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang