匿名函数结合内置函数使用

匿名函数结合内置函数使用

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))
posted @ 2020-10-13 11:25  chchcharlie、  阅读(181)  评论(0编辑  收藏  举报