• python 高阶函数


    映射类map():会根据提供的函数对指定序列做映射,映射的结果可以进行相应的类型转换。

    语法格式如下:

    # 第一个参数为映射函数,之后的一个或多个参数为可迭代类型,返回结果为map对象
    map(func, *iterables) --> map object
    # 迭代类型参数的个数,取决于映射函数所需的参数。

    注意:当有多个迭代类型参数参加映射时,映射结果取决于长度小的迭代类型。即当其中一个迭代类型映射结束,则全部结束。

    示例一:返回列表中元素平方后的结果

    list_x = [1, 2, 3, 4, 5]
    print(map(lambda x : x*x, list_x))
    print(list(map(lambda x : x*x, list_x)))
    
    -------------------------------------
    <map object at 0x0000011C145567B8>
    [1, 4, 9, 16, 25]

    示例二:对两个列表中的元素对应求和

    list_x = [1, 2, 3, 4, 5, 6]
    list_y = [1, 2, 3, 4, 5]
    print(list(map(lambda x,y : x+y, list_x, list_y)))
    
    ---------------------------
    [2, 4, 6, 8, 10]

    累积运算函数reduce():会根据提供的运算函数对迭代类型参数中的元素进行累积运算。

    语法格式如下:

    from functools import reduce
    # 最后一个可选参数initial为累积运算的初始值
    reduce(function, sequence[, initial]) -> value

    示例三:对列表中的元素以10为初始值进行累乘

    from functools import reduce
    list_x = [1, 2, 3, 4, 5]
    print(reduce(lambda x, y : x*y, list_x, 10))
    
    ---------------------------
    1200

    过滤类filter():根据提供的判断函数,对迭代类型参数进行过滤,保留使运算函数返回true的元素。

    语法格式如下:

    # 当第一个参数为None时,保留其中为true的元素
    filter(function or None, iterable) --> filter object

    示例四:保留列表中小于100的元素

    list_x = [12, 809, 87, 900, 100]
    print(filter(lambda x : True if x < 100 else False, list_x))
    print(list(filter(lambda x : True if x < 100 else False, list_x)))
    
    ---------------------------
    <filter object at 0x000002B8827267B8>
    [12, 87]

    总结一下

    map()是映射类,reduce()是累积运算函数,filter()是过滤类,其中map()和reduce()返回的都为它们的对象,reduce()返回的是累积运算后的结果,使用reduce()时要from functools import reduce。

  • 相关阅读:
    Oracle11g聚合函数
    和为S的连续正数数列,动态规划,C++
    统计一个数组在排序数组中出现的次数,C++,二分查找
    寻找两个链表的第一个公共子节点,C++
    二维数组中的查找
    数组中的逆序对,C++,分治算法
    得到从小到大的第N个丑数的三种方式(C++)一维动态规划
    连续字数组的最大和(Java)一个int数组,求其中的最大的连续数的和
    n个整数,求这中间最小的k个整数(Java)
    两个字符串的最长公共子串求法(C++、动态规划)
  • 原文地址:https://www.cnblogs.com/huwt/p/11187617.html
Copyright © 2020-2023  润新知