匿名函数结合内置函数使用
匿名函数结合内置函数使用
1、匿名函数结合max()使用
max():取最大值
语法:
max(可迭代对象, key = 函数)
例:获取dict1中工资最多的名字(max())
dict1 = {
"bear": 50,
"apple": 10,
"orange": 500,
"banana": 40
}
# 获取dict1中工资最多的名字
print(max(dict1, key=lambda x: dict1[x]))
2、匿名函数结合min()使用
mix():取最小值
语法:
min(可迭代对象, key = 函数)
例:获取dict1中工资最少的名字
dict1 = {
"bear": 50,
"apple": 10,
"orange": 500,
"banana": 40
}
# 获取dict1中工资最少的名字
print(min(dict1, key=lambda x: dict1[x]))
3、匿名函数结合sorted()使用
sorted():排序
默认升序,若降序传入参数reverse=True
语法:
sorted(*args, **kwargs) # 接收所有参数,包括关键字参数
例:根据dict1内的工资从大到小排序名字
# 根据dict1内的工资从大到小排序名字
dict1 = {
"bear": 50,
"apple": 10,
"orange": 500,
"banana": 40
}
new_list = sorted(dict1, key=lambda x:dict1[x], reverse=True) # 降序传入参数reverse=True
print(new_list)
4、匿名函数结合map()使用
map():映射:根据提供的函数对指定序列做映射
语法:
map(函数地址func, 可迭代对象) ---> map对象
map会将可迭代对象中的每一个值遍历取出,并且按照指定的规则映射出新的map对象,最后再将map对象转换成列表/元组
注意:只能转一次
例:将name_list中的"apple"元素加上"_Y"后缀,其他的元素加上"_N"后缀
# map()
name_list = ["bear", "apple", "banana"]
map_obj = map(lambda name: name + "_N" if name == "apple" else name + "_Y", name_list)
print(map_obj) # map对象:<map object at 0x00000000026A61C8>
print(list(map_obj)) # 将map对象map_obj转为list,结果为 ['bear_Y', 'apple_N', 'banana_Y']
print(tuple(map_obj)) # 将map对象map_obj转为tuple,结果为 ()
# 如果将map对象转化为list了,后面就不能再取值转化为tuple了
# 原因: map对象map_obj是一个生成器,也是一个迭代器,全面取值取完了之后就不能继续取值,所以后面转化为tuple时为空(如果先转化为tuple,那么转化为list时为空)
5、匿名函数结合reduce()使用
reduce():累计:对参数序列中的元素进行累计
(使用reduce()需要从functools模块中导入reduce函数)
语法:
reduce(函数地址func, 可迭代对象, 初始值(默认为0)) ---> 累计后的值
将可迭代对象中的值依次取出与初始值进行两两合并,初始值可以修改
初始值:执行reduce函数时,都是从初始值开始合并,默认为0
例:求1-100的和
# 普通方法for循环:
sum = 0
for i in range(0, 101):
sum += i
print(sum)
# 使用reduce():对参数序列中的元素进行累计
# 每次从可迭代对象中获取两个值进行合并
# 初始值:执行reduce函数时,都是从初始值开始合并
from functools import reduce
res = reduce(lambda x, y: x + y, range(1, 101), 0)
print(res)
reduce()求和图解:
6、匿名函数结合filter()使用
filter:过滤
语法:
filter(函数地址func, 可迭代对象) --> filter对象
将可迭代对象中的值遍历取出,然后通过判断,若条件成立“过滤获取”到对应的值放到一个filter对象中
例:将name_list中后缀为"_Y"的元素过滤出来
name_list = ["bear_Y", "apple", "banana_Y"]
# filter会将函数中返回的结果为True对应的参数值过滤出来,过滤出来的值会添加到filter对象中
print("bear_Y".endswith("_Y")) # True
filter_obj = filter(lambda name: name.endswith("_Y") , name_list) # .endswith()是字符串的内置方法,以什么结尾,startswith()是以什么开头
print(list(filter_obj))