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)) # 如果函数中有多个参数. 后面对应的列表要一一对应
    #结果:

        

  • 相关阅读:
    UVA 10618 Tango Tango Insurrection
    UVA 10118 Free Candies
    HDU 1024 Max Sum Plus Plus
    POJ 1984 Navigation Nightmare
    CODEVS 3546 矩阵链乘法
    UVA 1625 Color Length
    UVA 1347 Tour
    UVA 437 The Tower of Babylon
    UVA 1622 Robot
    UVA127-"Accordian" Patience(模拟)
  • 原文地址:https://www.cnblogs.com/dong-/p/9350198.html
Copyright © 2011-2022 走看看