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的留下该元素,
# 完毕