1. lambda 匿名函数
语法:
变量 = lambda 参数: 返回值
不能完成复杂的操作
2. sorted() 函数
排序:
1. 可迭代对象
2. key=函数, 排序规则
3. reverse, 是否倒序
3. filter() 函数
过滤
1. 函数, 返回True或False
2. 可迭代对象
4. map() 映射函数
1. 函数
2. 可迭代对象
1. lambda 匿名函数
# lambda: 后面是函数体(相当于是return后面的内容) # a 参数 c = lambda a: a*a # 一行搞定一个函数, 但是,不能完成复杂的函数操作,c相当于函数名 print(c) # 相当于访问lambda的函数名 print(c(5)) print(c.__name__) # 查看函数名,c是一个变量 c = lambda a,b: a+b print(c(1,2))
2. sorted 函数
lst = [3,34,1,14,5,23,15,25,30,12,41] lst.sort() print(lst) # 结果是顺序 ll = sorted(lst,reverse = True) # 内置函数,返回给你一个新列表, 新列表是被排序的 print(ll) # 结果是倒序,reverse=True 倒序 # 给列表排序, 根据字符串的长度进行排序 # 根据a的数量进行排序 lst = ["美国往事aaa", "战狼aaaa", "流浪地球aaaaaa", "西洋僵尸aaaaaaaa","飞机大战坦克aaa"] def func(s): # return len(s) # 根据长度进行排序 return s.count("a") # 返回数字 ret = sorted(lst, key=func) # 内部,把可迭代对象中的每一个元素传递给func ,key表示排序规则,用什么函数排序 # 可迭代对象 函数 print(ret) # 根据a的数量进行排序(用匿名函数和sorted()函数) ll = sorted(lst, key=lambda s: s.count("a")) # 算出a的数量也是根据数字进行排序 print(ll) # 根据长度进行排序(用匿名函数和sorted()函数) aa = sorted(lst, key=lambda a:len(a)) # 算出长度也是根据数字进行的排序 print(aa) # 变量 = sorted(可迭代对象,key=函数名,reverse=True(倒序))
3. filter 函数
lst = [1,2,3,4,5,6,7,8,9] # 判断奇数 def func(a): return a % 2 == 1 # 必须是True,False,是True留下该元素 aa = filter(func, lst) # aa是迭代器 第二个参数必须是可迭代对象 # 第一个参数, 函数, 将第二个参数中的每一个元素传给函数,函数如果返回True,留下该元素 print("__iter__" in dir(aa)) # 判断是否可迭代 print("__next__" in dir(aa)) # 判断是否是迭代器 print(list(aa)) a = filter(lambda a:a % 2 == 1, lst) for i in a: # a 是一个迭代器 print(i)
4. map 映射函数
lst = [1,2,3,4,5,6,7,8,9] def func(i): return i*i # map() 是 映射函数 对数据进处理 a = map(func,lst) # a是迭代器 print(list(a)) print(list(map(lambda a:a*a, lst))) # 把可迭代对象中的每一个元素传递给前面的函数进行处理, # 处理的结果会返回 lst1 = [1,2,3,4,5] lst2 = [2,4,6,8,] it = map(lambda x,y: x+y, lst1,lst2) print(list(it)) # 如果函数中有多个参数, 后面对应的列表要一一对应, 跟zip一样,跟最少的进行相加.
5. filter和map的区别:
lst = [ {"电影":'钢铁侠', "name":"小明", "age":18}, {"电影": "复仇者联盟",'name':"小黄", "age":38}, {"电影":"美国往事",'name':"小天", "age":48}, {"电影":'上海堡垒', "name":"小王","age":58}, {"电影":'战狼1', "name":"小张", "age":28} ] aa = map(lambda a:a["age"]<40,lst) print(list(aa)) x = filter(lambda dic:dic["age"]<40,lst) print(list(x)) # 区别 # filter ,map # map 可以数据进行比较的时候返回的是True和False # filter 数据进行比较是True的留下该元素,
# 完毕