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

 

 

    

posted @ 2018-07-22 15:00  唯你如我心  阅读(321)  评论(0编辑  收藏  举报