lambda匿名函数,sorted,filter,map使用

lambda 匿名函数 并不是没有名字,而是名字统一叫做<lambda>  特点:一句话函数,主要适用于简单函数

语法  lambda 参数: 返回值

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

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

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

*注意 可以用 _name_方法查看函数名

fn = lambda *args: max(args) # 单行函数

print(fn(1,2,5,2,3,4,156,3,2,2,4,5,56,34,34,34,34,88))

 sorted()排序, filter()过滤,map()分而治之 这三个内置函数的共同点都是可以跟匿名函数lambda一起用

sorted(iterable,key=none,reverse = False) 把可迭代对象中的每一个元素交给key处理,按照权重重新排序,默认是从小到大排,reverse =True 从大到小

lst = [1,5,3,4,6]
lst2 = sorted(lst)
print(lst) # 原列表不会改变
print(lst2) # 返回的新列表是经过排序的
dic = {1:'A', 3:'C', 2:'B'}
print(sorted(dic)) # 如果是字典. 则返回排序过后的key

和函数组合使用

lst = ["麻花藤", "冈本次郎", "中央情报局", "狐仙"]
# 计算字符串⻓度
def func(s):
 return len(s)
print(sorted(lst, key=func))#这里key是函数名不加()

和lamdad组合使用

lst = [{"id":1, "name":'alex', "age":18},
 {"id":2, "name":'wusir', "age":16},
 {"id":3, "name":'taibai', "age":17}]
# 按照年龄对学⽣信息进⾏排序
print(sorted(lst, key=lambda e: e['age']))

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

lst = [{"id":1, "name":'alex', "age":18},
 {"id":2, "name":'wusir', "age":16},
 {"id":3, "name":'taibai', "age":17}]
lst2 = filter(lambda el: el['age']>16,lst) 这里返回的是一个filter对象的内存地址
print(list(lst2))

map(function,iterable) 映射函数 可以对可迭代对象中的每⼀个元素进⾏映射. 分别取执⾏ function

lst1 = [1, 2, 3, 4, 5,6,7]  #求和
lst2 = [2, 4, 6, 8, 10]
ret = map(lambda x,y:x+y,lst1,lst2) #map返回的map对象的内存地址
print(list(ret))
#[3, 6, 9, 12, 15]

这里有水桶效应 ,取决于最短的

posted @ 2021-01-18 11:38  苦行僧冬*婷  阅读(135)  评论(0)    收藏  举报