iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python函数编编程的三大法宝map+filter+reduce分享
  • 783
分享到

Python函数编编程的三大法宝map+filter+reduce分享

2024-04-02 19:04:59 783人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录一、mapmap 传入内置 python 函数map 高级用法二、map 与列表推导式三、选择可迭代对象中的元素:filter四、合并可迭代对象中的元素: reduce五、总结众

众所周知,Python 支持多种编程范式:过程式(使用基础的语句)、面向对象编程和函数式编程。

Python 也提供了其他函数式编程语言的工具:

  • 利用 map 在一个可迭代对象的各项上调用函数的工具
  • 利用 filter 来过滤项
  • 利用 reduce 把函数作用在成对的项上来运行结果的工具

一、map

在没有循环的情况下处理可迭代对象:map

有时我们需要对列表、集合、字典等可迭代序列做的一个操作就是:对其中每一个元素值进行某种操作,把其结果收集起来。

比如选出数据库中的某一列进行加减操作,或者针对某些特殊的值做平方的处理。

我们先来看一个例子:

>>> test = [1, 2, 3, 4, 5, 6]
>>> square = []
>>> for x in test:
    square.append(x*x)

    
>>> square
[1, 4, 9, 16, 25, 36]
>>>

此时就可以利用 Pythonmap,允许您在不使用循环的显式中处理和转换所有项目,该技术通常称为映射。当您需要将转换函数应用于可迭代并将其转换为新的迭代时,map 就能够有其用武之地。

>>> test = [1, 2, 3, 4, 5, 6]
>>> 
>>> def square(num):
    return num*num

>>> list(map(square, test))
[1, 4, 9, 16, 25, 36]
>>>

如上,我们会传入一个自定义的函数 ​​square()​​  来更加一般化地使用它,也就是对列表中的每一个元素都应用这个函数。

map 对列表中的每一个元素都调用了 square 函数,并将返回值收集到一个新的列表中。

正因为我们需要自定义一个 square 函数,结合上一篇文章 ​ ​lambda 函数​​的简单介绍中。我们可以利用 lambda 直接生成这个匿名函数,也就是可以写出这样的代码实现相同的功能:

>>> list(map((lambda x: x*x), test))
[1, 4, 9, 16, 25, 36]
>>>

map 传入内置 Python 函数

除了自定义函数,还可以 map 中传入内置的 Python 函数。例如,如果您有一个字符串列表,您可以轻松地创建一个计算该字符串列表长度的新列表:

>>> name = ["Sam", "Dwen", "Kyrie"]
>>> list(map(len, name))
[3, 4, 5]
>>>

map 高级用法

map 不单能实现 for 循环能实现的同样的方式,还有性能优势。map 的高级用法比如:在一个可序列类型中,map 会按照顺序,并行地从各个序列中逐项取出一组又一组参数,然后传入函数中:

>>> pow(2, 8)
256
>>> pow(3,8)
6561
>>> list(map(pow, [1,2,3], [8, 8, 8]))
[1, 256, 6561]
>>>

能看到上述代码的结果,map 对传入的每个序列并行各自取一个值。

二、map 与列表推导式

map 调用其实与列表推导式相似。

>>> test = [1, 2, 3, 4, 5, 6]
>>> [x*x for x in test]
[1, 4, 9, 16, 25, 36]
>>> list(map((lambda x: x*x), test))
[1, 4, 9, 16, 25, 36]

但是 map 在一般情况下会比列表推导式运行更快,而且编写的代码也会更少。而且有一点很重要:通过使用圆括号而不是方括号来包围一个推导,能创建一个按需产生值的对象,减少了内存又减少了程序的响应时间。

三、选择可迭代对象中的元素:filter

map 函数是将 Python 函数式编程工具集中一个主要也相对明确的代表。而 filter 和 reduce 分别实现了基于一个测试函数选择可迭代对象的元素,以及向”元素对“ 应用函数的功能。

下面来看一个调用 filter 挑出一个序列中大于零的元素:

>>> list(range(-10, 10))
[-10, -9, -8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(filter((lambda x : x > 0), range(-10, 10)))
[1, 2, 3, 4, 5, 6, 7, 8, 9]

filter 对于序列或可迭代对象中的元素,如果函数对该元素返回了 True 值,这个元素就会被加入到结果列表中。

与 map 一样,filter 也能用一个 for 循环来等效,但是 filter 是内置的、简明的,通常也运行得更快:

>>> result = []
>>> for x in range(-10, 10):
    if x > 0:
        result.append(x)

        
>>> resullt
[1, 2, 3, 4, 5, 6, 7, 8, 9]

同样的功能,我们也能用列表推导式来实现:

>>> [x for x in range(-10,10) if x > 0]
[1, 2, 3, 4, 5, 6, 7, 8, 9]

四、合并可迭代对象中的元素: reduce

Python的 reduce()是一种函数,它在 Python 标准库中居住在一个名为 ​​functools​​  的模块中:

from functools import reduce

通过 reduce 来计算一个列表中所有元素加起来的和:

>>> reduce((lambda x, y: x + y),[1,2,3,4,5])
15

reduce 会将当前的和列表中的下一个元素传入列出的 lambda 函数,在默认条件下,序列中的第一个元素初始化了起始值。

使用 reduce 的这种用法也与如下使用 for 循环实现了同样的功能:

>>> test = [1, 2, 3, 4, 5]
>>> result = test[0]
>>> for x in test[1:]:
    result  = result + x
    
>>> result
15

五、总结

  • map 包括将转换函数应用于可迭代对象以生成新的可迭代对象。新迭代中的项是通过对原始迭代中的每个项调用转换函数来生成的。
  • filter 包括将谓词或布尔值函数应用于迭代以生成新的可迭代。通过筛选原始可迭代中的任何项目,以使谓词函数返回 false 的任何项目生成的项目。
  • reduce 包括将 reduce 函数应用于迭代以产生单个累积值。

到此这篇关于Python 函数编编程的三大法宝map+filter+reduce分享的文章就介绍到这了,更多相关Python 法宝map+filter+reduce内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python函数编编程的三大法宝map+filter+reduce分享

本文链接: https://www.lsjlt.com/news/143447.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python函数编编程的三大法宝map+filter+reduce分享
    目录一、mapmap 传入内置 Python 函数map 高级用法二、map 与列表推导式三、选择可迭代对象中的元素:filter四、合并可迭代对象中的元素: reduce五、总结众...
    99+
    2024-04-02
  • python中几个常用函数的正确用法-lambda/filter/map/reduce
    目录1 lambda2 filter3 map4 reduce5 联合使用lambda/filter/map/reduce这几个函数面试中很肯定会用到,本篇主要介绍这几个函数的用法。...
    99+
    2024-04-02
  • go函数在numpy编程算法中的应用案例分享
    文章: 作为一种高效的编程语言,Go语言在近年来受到了越来越多的关注。同时,在数据科学领域中,numpy也是一个非常流行的库。在本篇文章中,我们将会分享一些关于Go语言函数在numpy编程算法中的应用案例。 numpy 和 Go 语言 ...
    99+
    2023-06-28
    函数 numpy 编程算法
  • python函数式编程的示例分析
    这篇文章给大家分享的是有关python函数式编程的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗...
    99+
    2023-06-14
  • 从编程算法的角度看 Python 异步编程中的 load 函数
    Python 是一种被广泛应用的编程语言,其优美简洁的语法和丰富的库使其成为了开发者们的首选。在 Python 中,异步编程已经成为了一个重要的话题,它可以在不同的任务之间进行快速切换,提高程序的运行效率。而在 Python 的异步编程中,...
    99+
    2023-10-17
    异步编程 编程算法 load
  • 大数据编程算法中,Python和Apache的编程优势是什么?
    随着科技不断发展,大数据分析已经成为了当今商业领域中非常重要的一部分。而在大数据编程算法中,Python和Apache的编程优势也备受关注。本文将探讨Python和Apache在大数据编程算法中的优势,并介绍一些演示代码。 一、Python...
    99+
    2023-08-26
    apache 大数据 编程算法
  • 如何使用Python shell函数编写高效的编程算法?
    Python是一种灵活、简单且易于学习的编程语言。Python shell函数是Python编程语言的一个基本组成部分,它提供了一种交互式方式来执行Python代码。在本文中,我们将探讨如何使用Python shell函数编写高效的编程算法...
    99+
    2023-07-08
    shell 函数 编程算法
  • Python和Apache结合的大数据编程算法?
    在当今的数据时代,大数据已成为许多企业和组织的重要资源,如何高效地处理和分析这些数据已成为许多人关注的焦点。Python和Apache是两个极受欢迎的技术,它们的结合可以为我们提供强大的大数据编程工具。在本文中,我们将探讨如何使用Pyth...
    99+
    2023-08-26
    apache 大数据 编程算法
  • 函数式编程的 Python 大师班:征服复杂性
    不可变数据 函数式编程的核心原则是使用不可变数据。这意味着一旦变量被分配了值,它就不能再被修改。这有助于消除许多常见的编程错误,例如竞争条件和并发问题。Python 中有几种常用的不可变数据类型,包括字符串、元组和数字。 纯函数 纯函数是...
    99+
    2024-04-02
  • C++开发经验分享:C++大数据编程的实践经验
    在互联网时代,大数据成为了一种新的资源,伴随着大数据分析技术的不断提升,大数据程序设计需求也愈发迫切。而C++作为一种广泛应用的编程语言,其在大数据编程方面的独特优势也日益凸显。下面将分享我在C++大数据编程方面的实践经验。一、选择合适的数...
    99+
    2023-11-22
    大数据 C++ 编程实践
  • Python函数式编程装饰器的示例分析
    这篇文章给大家分享的是有关Python函数式编程装饰器的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、装饰器的本质:装饰器(decorator)本质是函数闭包(function closure)的语法...
    99+
    2023-06-29
  • Python中的函数式编程的方法是什么
    这篇文章主要介绍“Python中的函数式编程的方法是什么”,在日常操作中,相信很多人在Python中的函数式编程的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的函数式编程的方法是什么...
    99+
    2023-06-16
  • Python中的shell函数如何优化编程算法?
    Python作为一种高级编程语言,被广泛应用于各种领域。在Python中,shell函数是一种非常重要的编程工具,可以用来优化算法的效率。本文将介绍Python中shell函数的优化编程算法。 一、什么是shell函数? shell函数是一...
    99+
    2023-07-08
    shell 函数 编程算法
  • 如何在Python shell中使用函数编写最佳的编程算法?
    Python是一种易于学习且功能强大的编程语言,它为编写高效算法提供了很多工具和函数。在Python中,函数是一种非常有用的工具,可以帮助我们编写最佳的编程算法。在本文中,我们将探讨如何在Python shell中使用函数编写最佳的编程算法...
    99+
    2023-07-08
    shell 函数 编程算法
  • ​​​​​​​Python入门学习之函数式编程的方法
    本篇内容介绍了“Python入门学习之函数式编程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言在 Python 中,函数是「头等公...
    99+
    2023-06-30
  • Python 中的编程算法:load 函数如何应用?
    Python 作为一门编程语言,拥有丰富的编程算法,其中 load 函数是非常重要的一个。load 函数主要用于将数据从文件中加载到内存中进行处理。在本文中,我们将介绍 load 函数的基本用法及其应用场景。 一、load 函数的基本用法...
    99+
    2023-06-21
    load 编程算法 函数
  • Python 函数式编程:建立强大而可维护的代码
    核心原则 Python 函数式编程的核心原则包括: 不可变性:函数式程序中的变量是不可变的,这意味着它们不能被重新赋值。这消除了常见的错误,例如竞争条件和意外状态突变。 纯函数:纯函数是指不产生副作用的函数。它们仅取决于其输入,并总是返...
    99+
    2024-04-02
  • 如何在Python shell中使用函数编写最有效的编程算法?
    Python是一种高级语言,它可以帮助我们快速编写出高效的算法。在Python中,函数是一种非常重要的编程元素,可以帮助我们组织代码和提高代码的可读性。在本文中,我们将介绍如何在Python shell中使用函数编写最有效的编程算法。 一、...
    99+
    2023-07-08
    shell 函数 编程算法
  • Python shell中的函数如何应用于编程算法?
    Python shell是一种交互式解释器,可以让我们快速测试和调试Python代码。在Python shell中,我们可以使用各种Python函数来执行特定任务。这些函数可以非常有用,特别是在编程算法中。在本文中,我们将探讨如何使用Py...
    99+
    2023-07-08
    shell 函数 编程算法
  • 如何利用 Python 的 load 函数优化编程算法?
    Python 是一门广泛使用的编程语言,由于其简单易学和功能强大的特点,已经成为了许多开发者的首选语言。在 Python 中,load 函数是一个非常有用的函数,可以帮助我们优化编程算法,提高程序的性能。本文将介绍如何利用 Python 的...
    99+
    2023-06-21
    load 编程算法 函数
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作