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 数据加密代码
Dec 24 Python
Python中replace方法实例分析
Aug 20 Python
Python魔术方法详解
Feb 14 Python
python制作爬虫并将抓取结果保存到excel中
Apr 06 Python
python实现数据图表
Jul 29 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
详解supervisor使用教程
Nov 21 Python
matplotlib中legend位置调整解析
Dec 19 Python
Python3多线程爬虫实例讲解代码
Jan 05 Python
opencv python 傅里叶变换的使用
Jul 21 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
python爬虫scrapy图书分类实例讲解
Nov 23 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应用程序实现摘要式身份验证的方法详解
2013/06/08 PHP
浅谈PHP中Stream(流)
2015/06/08 PHP
thinkPHP线上自动加载异常与修复方法实例分析
2016/12/01 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
php session_decode函数用法讲解
2019/05/26 PHP
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
js实现简单的可切换选项卡效果
2015/04/10 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
微信小程序 animation API详解及实例代码
2016/10/08 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
2017/05/13 jQuery
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
Vue头像处理方案小结
2018/07/26 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
Nodejs Express 通过log4js写日志到Logstash(ELK)
2018/08/30 NodeJs
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
关于微信小程序map组件z-index的层级问题分析
2019/07/09 Javascript
微信小程序实现分页加载效果
2020/11/19 Javascript
[29:16]完美世界DOTA2联赛决赛日 Inki vs LBZS 第三场 11.08
2020/11/10 DOTA
python client使用http post 到server端的代码
2013/02/10 Python
Python作用域用法实例详解
2016/03/15 Python
Python tkinter模块中类继承的三种方式分析
2017/08/08 Python
python入门教程 python入门神图一张
2018/03/05 Python
python 借助numpy保存数据为csv格式的实现方法
2018/07/04 Python
python单例模式实例解析
2018/08/28 Python
使用Selenium破解新浪微博的四宫格验证码
2018/10/19 Python
python自制包并用pip免提交到pypi仅安装到本机【推荐】
2019/06/03 Python
用python打印1~20的整数实例讲解
2019/07/01 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
总经理司机职责
2014/02/02 职场文书
感恩寄语大全
2014/04/11 职场文书
2014年团支部工作总结
2014/11/17 职场文书
公司宣传语大全
2015/07/13 职场文书
医学会议开幕词
2016/03/03 职场文书