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]
这里有水桶效应 ,取决于最短的

浙公网安备 33010602011771号