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

 更新时间:2021年11月19日 15:23:57   作者:Python学习与数据挖掘  
大家好,今天这篇文章我将详细讲解 Pipe 如何让你的代码更加简洁的方法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步

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

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

在这里插入图片描述

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

在这里插入图片描述

Pipe 库可以做到这一点。

什么是管道?

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

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

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

要安装Pipe,请输入:

pip install pipe

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

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

在这里插入图片描述

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

select方法类似于map方法。

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

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

在这里插入图片描述

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

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

在这里插入图片描述

展开可迭代对象

1、chain方法

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

在这里插入图片描述

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

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

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

在这里插入图片描述

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

在这里插入图片描述

这样处理是不是很酷?

将列表中的元素分组

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

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

在这里插入图片描述

在上面的代码中,我们使用 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 方法:

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

在上面的代码中,我们:

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

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

结论

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

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

相关文章

  • Python中re模块的常用方法总结

    Python中re模块的常用方法总结

    这篇文章主要给大家介绍了关于Python中re模块的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • Python利用pandas计算多个CSV文件数据值的实例

    Python利用pandas计算多个CSV文件数据值的实例

    下面小编就为大家分享一篇Python利用pandas计算多个CSV文件数据值的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • Python可视化Tkinter进阶grid布局详情

    Python可视化Tkinter进阶grid布局详情

    这篇文章主要介绍了Python可视化Tkinter进阶grid布局详情,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • OpenCV简单标准数字识别的完整实例

    OpenCV简单标准数字识别的完整实例

    这篇文章主要给大家介绍了关于OpenCV简单标准数字识别的相关资料,要通过opencv 进行数字识别离不开训练库的支持,需要对目标图片进行大量的训练,才能做到精准的识别出目标数字,需要的朋友可以参考下
    2021-09-09
  • Python实现的堆排序算法原理与用法实例分析

    Python实现的堆排序算法原理与用法实例分析

    这篇文章主要介绍了Python实现的堆排序算法,简单描述了堆排序的原理,并结合实例形式分析了Python实现堆排序的相关操作技巧,代码中备有较为详细的注释便于理解,需要的朋友可以参考下
    2017-11-11
  • Python中re模块下的函数详解

    Python中re模块下的函数详解

    这篇文章主要介绍了Python中re模块下的函数详解,re.match() 函数是从头开始匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None,需要的朋友可以参考下
    2023-08-08
  • python 的topk算法实例

    python 的topk算法实例

    这篇文章主要介绍了python 的topk算法实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python中的反斜杠问题深入讲解

    python中的反斜杠问题深入讲解

    这篇文章主要给大家介绍了关于python中反斜杠问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Pandas.DataFrame删除指定行和列(drop)的实现

    Pandas.DataFrame删除指定行和列(drop)的实现

    本文主要介绍了Pandas.DataFrame删除指定行和列(drop)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • Python搭建HTTP服务过程图解

    Python搭建HTTP服务过程图解

    这篇文章主要介绍了Python搭建HTTP服务过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论