zoukankan      html  css  js  c++  java
  • python (匿名函数,sorted(),filter(),map())

    一. 匿名函数

      匿名函数是为了解决一些简单的需求而设计的一句话函数.

      lambda表示匿名函数,不需要def声明,一句话就可以声明一个函数.

      语法:

        函数名 = lambda 参数: 返回值

      注意:

        函数的参数可以是多个,参数之间用 , 隔开

        再复杂的匿名函数也只能写一行,逻辑结束后直接返回数据

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

    a = lambda x: x*x   # 一行搞定一个函数. 但是, 不能完成复杂的函数操作
    print(a)
    print(a(6))
    print(a.__name__)
    #结果:

      匿名函数并不是说一定没有名字,这里前面的变量a 就是一个函数户名. 

      说他是匿名函数原因是因为通过__name__查看函数名的时候,统一都叫lambda.

      在调用时没有什么特别之处,想正常函数一样调用就好.

    二. sorted()函数

      排序语法

      语法:

        lst = sorted(iterable,key:None,reverse = False)

        lst 是逻辑运算后返回一个排序后的新列表名

        iterable 可迭代对象

        key 排序规则,sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数,根据函数运算的结果进行排序.

        reverse 是否倒叙  Ture:倒叙, False:正序

    lst = [5,7,6,12,1,13,9,18,5]
    ll = sorted(lst, reverse=True) # 内置函数. 返回给你一个新列表  新列表是被排序的
    print(ll)
    #结果
    
    #根据元素中a的数量排序
    lst = ["大阳哥a", "尼古拉斯aa", "赵四aaa", "刘能a", "广坤aaaaaa", "谢大脚a"]
    ll = sorted(lst, key=lambda s:s.count('a')) # 内部. 把可迭代对象中的每一个元素传递给func
    print(ll)
    
    #根据字典中'age'的值的大小进行排序 lst = [ {'id':1, 'name':'w', 'age':18}, {'id':2, 'name':'t', 'age':58}, {'id':3, 'name':'d', 'age':38}, {'id':4, 'name':'x', 'age':48}, {'id':5, 'name':'a', 'age':18} ] ll = sorted(lst, key=lambda dic:dic['age'], reverse=True) print(ll)

    三. filter()函数

      筛选函数

      语法:

        filter(function,Iterable)

        function: 用来筛选的函数,在filter钟会知道哦哦那个吧iterable中的元素传递给function.然后根据function返回的Ture或False判断是否留下此项数据.

        iterable: 可迭代对象

    #筛选出奇数
    lst = [1,2,3,4,5,6,7,8,9]
    ll = filter(lambda i:i%2==1, lst)
     # 第一个参数. 函数. 将第二个参数中的每一个元素传给函数. 函数如果返回True, 留下该元素.
    print("__iter__" in dir(ll))    
    print("__next__" in dir(ll))        #所以返回的结果是一个迭代器
    print(list(ll))        
    
    
    #筛选出字典中'age'的值大于40的字典
    lst = [
            {'id':1, 'name':'w', 'age':18},
            {'id':2, 'name':'t', 'age':58},
            {'id':3, 'name':'x', 'age':38},
            {'id':4, 'name':'d', 'age':48},
            {'id':5, 'name':'a', 'age':18}
           ]
    print(list(filter(lambda dic: dic['age']>40, lst)))

    四. map()函数

      映射函数

      语法:

        map(function, iterable)

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

      将可迭代对象中的每一个元素传递给前面的函数经行处理. 处理的结果会返回一个生成器.

    lst = [1,2,3,4,5,6,7,8,9,0,23,23,4,52,35,234,234,234,234,234,23,4]
    it = map(lambda i: i * i, lst) # 把可迭代对象中的每一个元素传递给前面的函数进行处理. 处理的结果会返回成迭代器
    print(list(it))
    #结果:
    
    lst1 = [ 1, 2, 3, 4, 5]
    lst2 = [ 2, 4, 6, 8]
    it = map(lambda x, y:x+y, lst1, lst2)
    print(list(it)) # 如果函数中有多个参数. 后面对应的列表要一一对应
    #结果:

        

  • 相关阅读:
    如何:使用向导来处理项目模板 【转载】
    .NET : 如何在生成XML文档时绑定样式表
    如何在生产环境部署K2的流程
    SQL Server 数据库文档生成工具开源项目【合作邀请】
    新的纪元
    SharePoint : 谁说WSS不支持审核
    C++ : 类型的别名和对象的别名
    C++: 引用和地址运算符
    Infopath : 如何通过代码复制格式文本框的值
    正确地使用投影仪和移动硬盘
  • 原文地址:https://www.cnblogs.com/dong-/p/9350198.html
Copyright © 2011-2022 走看看