zoukankan      html  css  js  c++  java
  • 从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的

    摘要:在本文中,您将学习Python中的三个令人印象深刻的函数,即map(),filter和reduce()。

    Python提供了许多预定义的内置函数,最终用户可以通过调用它们来使用它们。这些功能不仅简化了程序员的工作,而且创建了标准的编码环境。在本文中,您将学习Python中的三个令人印象深刻的函数,即map(),filter和reduce()。

    在继续之前,让我们看一下内容:

    • 什么是Python中的map,filter和reduce函数?
    • 在以下范围内使用用户定义的函数和lambda函数:
      • map()函数
      • filter()函数
      • reduce()函数
    • 一起使用map(),filter()和reduce()函数
      • map()中的filter()
      • filter()中的map()
      • map()和filter()中带有reduce()

    因此,让我们开始吧。:)

    什么是Python中的map(),filter()和reduce()函数?

    如前所述,map(),filter()和reduce()是Python的内置函数。这些功能启用了Python的功能编程方面。在函数式编程中,传递的参数是决定输出的唯一因素。这些功能可以将任何其他功能用作参数,也可以提供给其他功能作为参数。现在让我们更深入地研究这些功能。

    map()函数:

    map()函数是一种高阶函数。如前所述,此函数将另一个函数与一个可迭代序列一起作为参数,并在将该函数应用于序列中存在的每个可迭代序列之后返回输出。其语法如下:

    句法:

    地图(函数,可迭代)

    在此,函数定义了一个表达式,该表达式又应用于可迭代对象。map函数可以将用户定义的函数以及lambda函数作为参数。

    在以下范围内使用用户定义的函数和Lambda函数:

    map()中的用户定义函数:

    map()函数可以将用户定义的函数作为参数。这些功能的参数由用户或程序员专门设置。例如:

    例子:

    def newfunc(a):
        return a*a
    x = map(newfunc, (1,2,3,4))  #x is the map object
    print(x)
    print(set(x))

    输出:

    <位于0x00000284B9AEADD8的地图对象>
    {16, 1, 4, 9}

    如您所见,x是一个地图对象。下一部分输出显示以newfunc()作为参数的map函数,然后将a * a应用于所有可迭代对象。结果,所有可迭代变量的值将自身相乘并返回。

    注意:输出不是按可迭代的值的顺序,因为我使用过set()函数。您还可以使用list()或tuple()函数,例如:

    例子:

    def newfunc(a):
        return a*a
    x = map(newfunc, (1,2,3,4))  #x is the map object
    print(x)
    print(list(x))

    输出:

    <位于0x00000284B9AEA940的地图对象>
    [1, 4, 9, 16]

    您还可以传递多个参数列表。例如:

    例子:

    def func(a, b):
        return a + b
     
    a = map(func, [2, 4, 5], [1,2,3])
    print(a)
    print(tuple(a))

    输出:

    <位于0x00000284B9BA1E80的地图对象>
    (3, 6, 8)

    现在让我们看看如何在map()函数中使用lambda函数。

    map()中的Lambda函数:

    Lambda函数是具有任何名称的函数。这些功能通常作为参数提供给其他功能。现在让我们尝试将lambda函数嵌入map()函数中。考虑以下示例:

    例子:

    tup= (5, 7, 22, 97, 54, 62, 77, 23, 73, 61)
    newtuple = tuple(map(lambda x: x+3 , tup)) 
    print(newtuple)

    输出:

    (8, 10, 25, 100, 57, 65, 80, 26, 76, 64)

    上面的输出是将lambda表达式(x + 3)应用于元组中存在的每个项目的结果。

    filter()函数:

    filter()函数用于创建由值组成的输出列表,该值针对该值返回true。它的语法如下:

    句法:

    过滤器(函数,可迭代)

    就像map()一样,可以使用此函数,也可以将用户定义的函数以及lambda函数用作参数。

    例子:

    def func(x):
        if x>=3:
            return x
    y = filter(func, (1,2,3,4))  
    print(y)
    print(list(y))

    输出:

    <位于0x00000284B9BBCC50的过滤器对象>
    [3, 4]

    如您所见,y是过滤器对象,并且列表是条件(x> = 3)正确的值的列表。

    在filter()中使用lambda:

    用作参数的lambda函数实际上定义了要检查的条件。例如:

    例子:

    y = filter(lambda x: (x>=3), (1,2,3,4))
    print(list(y))

    输出:

    [34]

    上面的代码产生的输出与以前的函数相同。

    reduce()函数:

    顾名思义,reduce()函数将给定函数应用于可迭代对象并返回单个值。

    该函数的语法如下:

    句法:

    减少(函数,可迭代)

    此处的函数定义了需要将哪些表达式应用于可迭代对象。此功能需要从functools模块导入。例如:

    例子:

    from functools import reduce
    reduce(lambda a,b: a+b,[23,21,45,98])

    输出: 187

    在上面的示例中,reduce函数连续添加列表中存在的每个可迭代对象,并返回单个输出。

    Python中的map(),filter()和reduce()函数可以一起使用。

    一起使用map(),filter()和reduce()函数:

    执行此操作时,首先会解析内部函数,然后外部函数将对内部函数的输出进行操作。

    让我们首先尝试将filter()函数作为参数传递给map()函数。

    在map()中使用filter():

    下面给出的代码首先检查条件(x> = 3)对于可迭代对象是否为真。然后,使用map()函数映射输出。

    例子:

    c = map(lambda x:x+x,filter(lambda x: (x>=3), (1,2,3,4)))
    print(list(c))

    输出: [6,8]

    如果从给定的元组中滤除大于或等于3的整数,则结果为[3,4]。然后,如果使用(x + x)条件映射此条件,则将获得[6,8],即输出。

    在filter()中使用map():

    当您在filter()函数中使用map()函数时,可迭代对象首先由map函数进行操作,然后将filter()的条件应用于它们。

    例子:

    c = filter(lambda x: (x>=3),map(lambda x:x+x, (1,2,3,4)))  #lambda x: (x>=3)
    print(list(c))

    输出: [ 4、6、8 ]

    在reduce()中使用map()和filter():

    内部函数的输出根据提供给reduce()函数的条件而减少。

    例子:

    d = reduce(lambda x,y: x+y,map(lambda x:x+x,filter(lambda x: (x>=3), (1,2,3,4)))) 
    print(d)

    输出: 14

    输出是[6,8]的结果,它是内部map()和filter()函数的结果。

    到此为止,我们已经结束了有关map(),filter()和Python中的reduce函数的文章的结尾。希望您已经清楚地了解了所有内容。确保尽可能多地练习并恢复经验。

     本文分享自华为云社区《从零开始学python | 使用Python映射,过滤和缩减函数:所有您需要知道的》,原文作者:Yuchuan。

    点击关注,第一时间了解华为云新鲜技术~

  • 相关阅读:
    计算 HMAC-SHA1 阿里云消息队列RocketMQ版签名机制案例以及http调用接口案例
    按照参数名称的字典顺序对请求中所有的请求参数(包括公共请求参数和接口的自定义参数,但不包括公共请求参数中的Signature参数)进行排序
    Appium自动化(2)
    TERSUS笔记员工信息401-显示列表处理+序号+01共几条取值+08每页条数下拉菜单值设置+02共页数计算取值
    TERSUS笔记员工信息400-增加
    TERSUS笔记310-删除
    TERSUS笔记309-修改
    TERSUS笔记308-查询
    TERSUS笔记307-07GO
    TERSUS笔记306-03首页
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/14665877.html
Copyright © 2011-2022 走看看