051 匿名函數

1、有名函數

  • 咱們以前定的函數都是有名函數,它是基於函數名使用
def func():
    print('from func')


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

2、匿名函數

  • 顧名思義匿名函數就是沒有綁定名字的函數,使用一次就被收回,直接加括號據能夠運行
  • 匿名函數須要關鍵字lambda
f = lambda x: x+1
res = f(1)
print(res)
# 1

3、與內置方法連用

  • 匿名函數一般與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()方法。python

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()方法。code

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)))
相關文章
相關標籤/搜索