• python中reduce filter map lambda函数


    lambda函数

    python 使用 lambda 来创建匿名函数,lambda返回值是一个函数的地址,也就是函数对象。

    语法:lambda [arg1 [,arg2,.....argn]]:expression

    • lambda只是一个表达式,函数体比def简单很多。
    • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
    • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
    • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率

    参考:https://www.runoob.com/python/python-functions.html

    从函数命名的角度:匿名,直接返回可供调用的值

    从输入输出的角度:支持多个输入参数,但只支持一个表达式

    从函数功能的角度:结构简单,无须定义函数名。但所能实现的功能也极其受限。

    从访问变量的角度:只支持访问lambda自己定义的变量。不支持外部变量访问

    从运行效率的角度:lambda实际上仍开辟了一个内存单元,并没有提升运行效率

    filter函数

    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。

    该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。

    语法:filter(function, iterable) # function为判断函数的名字(不带小括号和参数的)(也可以用匿名函数lambda),iterable为可迭代对象

    注意: Pyhton2.x 返回列表,Python3.x 返回迭代器对象(转化成列表要用list())

     参考:https://www.runoob.com/python/python-func-filter.html

    map函数

    map() 会根据提供的函数对指定序列做映射。

    第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

    语法:map(function,iterable, ...)

    注意: Pyhton2.x 返回列表,Python3.x 返回迭代器对象(转化成列表要用list())

    参考:https://www.runoob.com/python/python-func-map.html

    reduce函数

    reduce() 函数会对参数序列中元素进行累积。

    函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

    语法:reduce(function,iterable[,initializer]) # iniializer为可选项,表示初始参数

    参考:https://www.runoob.com/python/python-func-reduce.html

    lambda函数常跟filter、map、sorted、reduce结合使用

    - filter函数。此时lambda函数用于指定过滤列表元素的条件。

    如filter(lambda x: x % 3 == 0, [1, 2, 3])指定将列表[1,2,3]中能够被3整除的元素过滤出来,其结果是[3]。

    - sorted函数。此时lambda函数用于指定对列表中所有元素进行排序的准则。

    如sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))将列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素与5距离从小到大进行排序,其结果是[5, 4, 6, 3, 7, 2, 8, 1, 9]。

    - map函数。此时lambda函数用于指定对列表中每一个元素的共同操作。

    例如map(lambda x: x+1, [1, 2,3])将列表[1, 2, 3]中的元素分别加1,其结果[2, 3, 4]。

    - reduce函数。此时lambda函数用于指定列表中两两相邻元素的结合条件。

    例如reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9])将列表 [1, 2, 3, 4, 5, 6, 7, 8, 9]中的元素从左往右两两以逗号分隔的字符的形式依次结合起来,其结果是'1, 2, 3, 4, 5, 6, 7, 8, 9'。

    参考:https://blog.csdn.net/zhanshen112/article/details/90603865

  • 相关阅读:
    JS运行机制之 Event Loop 的思考
    模块机制 之commonJs、node模块 、AMD、CMD
    git报错:'fatal:remote origin already exists'怎么处理?附上git常用操作以及说明。
    Uncaught RangeError: Maximum call stack size exceeded-栈溢出
    对循环内部反复声明变量的写法的一点想法?
    JS的forEach和map方法的区别
    函数的属性和方法之call、apply 及bind
    利用Apach ab对nodejs进行并发负载的压力测试
    怎么判断一个对象是不是数组类型?
    Python模块学习之fabric
  • 原文地址:https://www.cnblogs.com/xiaocaiqa/p/12469583.html
Copyright © 2020-2023  润新知