zoukankan      html  css  js  c++  java
  • lambda匿名函数,sorted排序,filter()筛选,map()映射

    一丶匿名函数

      语法:

        函数名 = lambda参数:返回值

    # 普通的正常的函数
    def func(n):
        return n * n
    ret = func(9)
    print(ret)
    
    # 匿名函数
    a = lambda n : n * n
    ret = a(9)
    print(ret)

      说是匿名函数,可总该有个名字吧,我们可以用__name__来查看一下名字

    b = lambda x: x+1
    a = lambda n : n * n
    print(a.__name__) # __name__的值都是<lambda>
    print(b.__name__) # __name__的值都是<lambda>

      单个变量传值可以这样传,那假如两个或多个变量呢,该怎么样呢?我们可以用小括号括起来,要不就会报错

    def func(x, y):
        return x, y
    
    print(func(1,2)) #(1,2)
    
    suiyi = lambda x, y : (1, 2)   # 笔试题
    print(suiyi)
    print(suiyi(250,38))    #(1,2)

      注意:

        1.函数的参数可以有多个,多个参数之间用逗号隔开

        2.匿名参数不管多复杂,只能写一行,且逻辑结束后直接返回数据

        3.返回值和正常函数一样,可以是任意数据类型

    二丶sorted排序

    lst = [16, 18, 32, 54, 12, 9]
    lst.sort() # list的方法
    print(lst)  #[9, 12, 16, 18, 32, 54]
    #内置函数中提供了一个通用的排序方案, sorted()
    s = sorted(lst)
    print(s)    #[9, 12, 16, 18, 32, 54]

      语法:

        sorted(Iterable,key = None,reverse=False)

        Iterable:可迭代对象

        key:排序规则(排序函数),在sorted内部将可迭代对象的每一个元素传递给这个函数的参考值,根据函数运算的结果进行排序(根据权重进行排序)

        reverse:是否是倒序.True:倒序,False:正序

      sorted可以跟lambda组合使用

    lst = [
        {'name':"迪迦奥特曼","age":48},
        {"name":"雷欧娜",'age':38},
        {"name":"赛文","age":39},
        {"name":"泰罗","age":32},
        {"name":"狗哥无敌","age":28}
        ]
    
    ll = sorted(lst, key=lambda el: len(el['name']), reverse=False)
    print(ll)

    三丶filter()筛选函数

      语法:

        filter(function,Iterable)

        function:用来筛选的函数,在filter中会自动的把iterable中的元素传递给function.然后根据function返回的True或者False来判断是否保留此项数据

        Iterable:可迭代对象

    lst = ["张无忌", "张铁林", "马丹", "曹丹","马大帅"]
    def func(el):
        if el[0] == '':
            return False # 不想要的
        else:
            return True # 想要的
    # 筛选,
    # 将lst中的每一项传递给func, 所有返回True的都会保留, 所有返回False都会被过滤掉
    f = filter(lambda el: el[0]!="", lst) 
    print("__iter__" in dir(f)) # 判断是否可以进行迭代
    for e in f:
        print(e)

    四丶map()映射函数

      语法:

        map(function,Iterable)

        可以对可迭代对象中的每一个元素进行映射,分别取执行function

    # 计算列表中没个数字的平方
    #普通函数
    lst = [1,4,7,2,5,8]
    ll = []
    for el in lst:
        ll.append(el**2)
    print(ll)
    #映射
    def func(el):
        return el**2
    m = map(lambda el: el**2, lst) # 把后面的可迭代对象中的每一个元素传递给function, 结果就是function的返回值
    print(list(m))

  • 相关阅读:
    使用boost中的property_tree实现配置文件
    C++ 中使用boost::property_tree读取解析ini文件
    引用计数的原理和实例
    C++智能指针(auto_ptr)详解
    Oracle数据库用户锁定原因以及处理方式(ORA-28000)
    Address already in use : connect 的解决办法
    JMeter之Ramp-up Period(in seconds)说明(可同时并发)
    JMETER压力测试报错:JAVA.NET.BINDEXCEPTION: ADDRESS ALREADY IN USE: CONNECT
    spring cloud学习填坑笔记
    使用JMeter进行一次简单的带json数据的post请求测试,json可配置参数
  • 原文地址:https://www.cnblogs.com/qicun/p/9481952.html
Copyright © 2011-2022 走看看