zoukankan      html  css  js  c++  java
  • python——lambda,filter,map,reduce

    lambda函数

    使用方法:lambda [arg1[,arg2,arg3,...,argn]] : expression

    如:

    add = lambda(x,y:x+y)
    add(1,2)

    结果为1+2=3

    filter函数

    filter(bool_func,seq)

    此函数的功能相当于过滤器,通过返回值为bool的函数bool_func来迭代遍历seq中的每个元素;

    结果返回一个seq中使bool_func返回值为true的元素的序列。

    filter(lambda x : x%2 == 0,[1,2,3,4,5])  

    结果为[2,4],即1~5中可以被2整除的数为2和4

    filter的内部实现如下:

    def filter(bool_func,seq):  
        filtered_seq = []  
        for eachItem in seq:  
            if bool_func(eachItem):  
                filtered_seq.append(eachItem)  
        return filtered_seq

    map函数

    map(function, seq[..., seq, ...]) -> list

    第一个参数是一个函数,剩下的参数是一个或多个序列,返回值是一个集合。

    map(lambda x: x ** 2, [1, 2, 3, 4, 5])

    返回结果为:[1, 4, 9, 16, 25]

    在参数存在多个序列时,会依次以每个序列中相同位置的元素做参数调用function函数。

    比如要对两个序列中的元素依次求和。

    map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

    返回结果为:[3, 7, 11, 15, 19]

    要注意function函数的参数数量,要和map中提供的集合数量相匹配。

    如果集合长度不相等,会以最小长度对所有集合进行截取。

    当函数为None时,操作和zip相似:

    map(None, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

    返回结果为:

    [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

     

    reduce函数

    reduce(func, seq[], initial) -> value

    func是一个有两个参数的函数,reduce依次从seq中取一个元素,和上一次调用func的结果做参数再次调用func。

    initial为可选参数,如果提供该参数,则func第一次会用intial和seq中得第一个元素作为参数,否则用seq中的第一个和第二个元素作为参数

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

    结果为21,即(((((1+2)+3)+4)+5)+6)

    reduce(lambda x, y: x + y, [2, 3, 4, 5, 6])

    结果为20,即(((2+3)+4)+5)+6)

    注:reduce中得func不能为None

     

     
  • 相关阅读:
    iot 表索引dump《2》
    heap表和iot表排序规则不同
    Cannot complete the install because one or more required items could not be found.
    iot表输出按主键列排序,heap表不是
    iot 表主键存放所有数据,且按数据插入顺序排序
    iot表和heap表排序规则不同
    org.eclipse.graphiti.ui.editor.DiagramEditorInput.
    Oracle 排序规则
    perl 异步超时 打印错误
    14.6.3 Grouping DML Operations with Transactions 组DML操作
  • 原文地址:https://www.cnblogs.com/licheng127/p/3793314.html
Copyright © 2011-2022 走看看