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中查找excel某一列的重复数据 剔除之后打印
Feb 10 Python
python 切片和range()用法说明
Mar 24 Python
python 将字符串转换成字典dict
Mar 24 Python
sqlalchemy对象转dict的示例
Apr 22 Python
解析Python中的生成器及其与迭代器的差异
Jun 20 Python
Python简单定义与使用字典dict的方法示例
Jul 25 Python
scrapy spider的几种爬取方式实例代码
Jan 25 Python
Python使用matplotlib和pandas实现的画图操作【经典示例】
Jun 13 Python
python 实现二维列表转置
Dec 02 Python
python 伯努利分布详解
Feb 25 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 Python
Python可视化神器pyecharts绘制地理图表
Jul 07 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管理nginx虚拟主机shell脚本实例
2014/11/19 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
PHP 前加at符合@的作用解析
2015/07/31 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
php用正则判断是否为数字的方法
2016/03/25 PHP
PHP安全下载文件的方法
2016/04/07 PHP
Yii多表联合查询操作详解
2016/06/02 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
实例讲解PHP表单处理
2019/02/15 PHP
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
Node.js 日志处理模块log4js
2016/08/28 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
在localStorage中存储对象数组并读取的方法
2016/09/24 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
浅谈react+es6+webpack的基础配置
2017/08/09 Javascript
Vue组件之自定义事件的功能图解
2018/02/01 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
Python首次安装后运行报错(0xc000007b)的解决方法
2016/10/18 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
python创建学生成绩管理系统
2019/11/22 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
利用HTML5+css3+jquery+weui实现仿微信聊天界面功能
2018/01/08 HTML / CSS
Lookfantastic美国/加拿大:英国知名美妆购物网站
2019/03/27 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
.NET方向面试题
2014/11/20 面试题
医学生就业推荐表自我鉴定
2014/03/26 职场文书
专升本学生毕业自我鉴定
2014/10/04 职场文书
教师辞职书范文
2015/02/26 职场文书
自我工作评价范文
2015/03/06 职场文书
新店开张宣传语
2015/07/13 职场文书