欢迎来到Cecilia陈的博客

孤独,是人一生最好的修行。

051 匿名函数

一、有名函数

  • 我们之前定的函数都是有名函数,它是基于函数名使用
def func():
    print('from func')


func()
func()
func()
print(func)

二、匿名函数

  • 顾名思义匿名函数就是没有绑定名字的函数,使用一次就被收回,直接加括号据可以运行
  • 匿名函数需要关键字lambda
f = lambda x: x+1
res = f(1)
print(res)
# 1

三、与内置方法连用

  • 匿名函数通常与max(),sorted(),filter()、sorted()方法联用
salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000
}

print(f"max(salary_dict): {max(salary_dict)}")
# max(salary_dict): tank

1.如果我们想对上述字典中的人,按照薪资从大到小排序,可以使用sorted()方法。

1.首先将可迭代对象变成迭代器对象
2.res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据

salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000
}
salary_list = list(salary_dict.items())
print(salary_list) # [('nick', 3000), ('jason', 100000), ('tank', 5000), ('sean', 2000)]

def func(i):  # i = ('sean', 2000), ('nick', 3000),('tank', 5000),('jason', 100000)
    return i[1]  # 2000,3000,5000,100000

salary_list.sort(key=lambda i: i[1])  # 内置方法是对原值排序
# # 按照func的规则取出一堆元素2000,3000,5000,100000
# # 然后按照取出的元素排序
# print(salary_list)
new_salary_list = sorted(salary_list, key=lambda i: i[1], reverse=True)  # 重新创建一个新的列表进行排序
print(new_salary_list)
# [('jason', 100000), ('tank', 5000), ('nick', 3000), ('sean', 2000)]

2.如果我们想从上述字典中取出薪资最高的人,我们可以使用max()方法,但是max()默认比较的是字典的key。

1.首先将可迭代对象变成迭代器对象
2.res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据

salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000
}
salary_list = list(salary_dict.items())
print(salary_list)  # [('nick', 3000), ('jason', 100000), ('tank', 5000), ('sean', 2000)]

print(max(salary_list,key=lambda i:i[1]))
print(min(salary_list,key=lambda i:i[1]))

3.如果我们想对一个列表中的某个人名做处理,可以使用map()方法。

1.首先将可迭代对象变成迭代器对象
2.res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据

salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000
}
salary_list = list(salary_dict.items())
print(list(map(lambda i: i[1] + 2000, salary_list)))

4..如果我们想筛选工资大于5000的人,我们可以使用filter()方法

1.首先将可迭代对象变成迭代器对象
2.res=next(迭代器对象),将res当做参数传给key指定的函数,然后将该函数的返回值当做判断依据

salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000
}
salary_list = list(salary_dict.items())
print(list(filter(lambda i: i[1] >5000, salary_list)))
posted @ 2019-08-13 20:15  Cecilia陈  阅读(105)  评论(0编辑  收藏  举报