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。

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

  • 相关阅读:
    Nginx负载均衡+代理+ssl+压力测试
    Nginx配置文件详解
    HDU ACM 1690 Bus System (SPFA)
    HDU ACM 1224 Free DIY Tour (SPFA)
    HDU ACM 1869 六度分离(Floyd)
    HDU ACM 2066 一个人的旅行
    HDU ACM 3790 最短路径问题
    HDU ACM 1879 继续畅通工程
    HDU ACM 1856 More is better(并查集)
    HDU ACM 1325 / POJ 1308 Is It A Tree?
  • 原文地址:https://www.cnblogs.com/huaweiyun/p/14665877.html
Copyright © 2011-2022 走看看