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