python匿名函數

78匿名函數

1、有名函數

咱們以前定義的函數都是有名函數,它是基於函數名使用的。函數

def func():
    print('from func')
func()
func()
func()
print(func)
#輸出:
from func
from func
from func
<function func at 0x0000026B60E47048>

2、匿名函數

匿名函數。他沒有綁定名字,使用一次即被收回,加括號便可以運行。code

print(lambda x,y:x+y)
#輸出:
<function <lambda> at 0x0000027D6A837048>
res = (lambda x,y:x+y)(1,2)
print(res)
#輸出:
3

3、與內置函數聯用

匿名函數一般與max(),sorted(),filter(),sorted()方法聯用。對象

  1. 若是咱們想從上述字典中取出最薪資最高的人,咱們能夠使用max()方法,可是max()默認比較的是字典的ley。
    1. 首先將可迭代對象變成迭代器對象。
    2. res=next(迭代器對象),將res當作參數傳給key指定的函數,而後該函數的返回值看成判斷依據。
salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000
}

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


def func(k):
    return salary_dict[k]


print(f"max(salary_dict, key=func()): {max(salary_dict, key=func)}")


print(max(salary_dict, key=lambda name: salary_dict[name]))
#輸出:
max(salary_dict): tank
max(salary_dict, key=func()): jason
jason
  1. 若是咱們想對上述字典中的人,按照薪資從大到小排序,能夠使用sorted()方法。排序

    sorted()工做原理:it

    1. 首先將可迭代對象變成迭代器對象
    2. res=next(迭代器對象),將res當作參數傳給第一個參數指定的函數,而後將該函數的返回值看成判斷依據。
lis = [1,3,2,5,8,6]
sorted(lis)
print(lis)
print(sorted(lis,reverse=True))

#輸出:
[1, 3, 2, 5, 8, 6]
[8, 6, 5, 3, 2, 1]
salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000
}

print(sorted(salary_dict, key=lambda name: salary_dict[name]))
#輸出:
['sean', 'nick', 'tank', 'jason']
  1. 若是咱們想對一個列表中的某一我的民作處理,能夠使用map()方法。io

    map()工做原理。function

    1. 首先將可迭代對象變成迭代器
    2. res=next(迭代器對象),將res當作參數傳給第一個參數指定的函數,而後將該函數的返回值做爲map()方法的結果之一。
name_list = ['jason','tank','sean']
res = map(lambda name:f"{name} sb",name_list)
print(f"list(res):{list(res)}")

#輸出:
list(res):['jason sb', 'tank sb', 'sean sb']
  1. 若是咱們想要篩選除名字中含有‘sb'的名字,咱們能夠使用filter()方法。class

    filter()工做原理:匿名函數

    1. 首先可將迭代對象變成迭代器對象
    2. res=next(迭代器對象),將res當闡述傳給第一個參數指定的函數,而後filter()會判斷函數的返回值的真假,若是爲真則留下。
name_list=['nick','jason sb','tank sb','sean sb']
filter_res = filter(lambda name:name.endswith('sb'),name_list)
print(list(filter_res))
#輸出:
['jason sb', 'tank sb', 'sean sb']
相關文章
相關標籤/搜索