什么是匿名函數(shù)?定義:沒(méi)有函數(shù)名的自定義函數(shù) 首先用一個(gè)簡(jiǎn)單的實(shí)例——求給定半徑的圓面積,來(lái)剖析一下匿名函數(shù)的應(yīng)用場(chǎng)景。
def circular_area(r): result = 3.14 * r * r return resultprint('半徑為{}的圓面積是{}'.format(10, circular_area(10)))輸出結(jié)果:半徑為10的圓面積是314.0
通過(guò)對(duì)比可以發(fā)現(xiàn),匿名函數(shù)不需要預(yù)先定義,直接把函數(shù)體寫(xiě)在一行代碼內(nèi),隨用隨寫(xiě)、靈活方便,避免過(guò)多定義函數(shù),增加閱讀量。 實(shí)例分析匿名函數(shù)寫(xiě)法
# 對(duì)下面list1按照年齡排序list1 = [('張三', 22), ('李四', 18), ('王五', 24), ('趙六', 16)]# 使用lambda配合內(nèi)置函數(shù)sorted的key參數(shù)進(jìn)行排序,生成新列表list2 = sorted(list1, key=lambda x: x[1])print(list2)輸出結(jié)果:[('趙六', 16), ('李四', 18), ('張三', 22), ('王五', 24)]# 也可以使用列表的sort方法進(jìn)行排序,不生成新列表list1.sort(key=lambda x: x[1], reverse=True)print(list1)輸出結(jié)果:[('王五', 24), ('張三', 22), ('李四', 18), ('趙六', 16)]
映射函數(shù)格式:map(函數(shù),可迭代參數(shù)) # 下面使用匿名函數(shù)配合map(映射函數(shù)),求一個(gè)列表的所有元素的平方值,并生成新列表m1 = map(lambda x: x ** 2, [1, 2, 3, 4, 5])print(m1)輸出結(jié)果:<map object at 0x0000022866FDBF70># 通過(guò)結(jié)果可以看到,映射函數(shù)的返回值是一個(gè)映射對(duì)象地址# 使用list函數(shù)把映射結(jié)果轉(zhuǎn)換成列表m2 = list(m1)print(m2)輸出結(jié)果:[1, 4, 9, 16, 25]# 由此可以看出,map函數(shù)是通過(guò)函數(shù)參數(shù)和可迭代參數(shù)映射出一個(gè)新的可迭代數(shù)據(jù)# 利用map函數(shù),將已知列表里的字符串首字母變成大寫(xiě)names = ['jack', 'tom', 'ribo', 'jekiiy']m1 = map(lambda x: x.capitalize(), names)result = list(m1)print(result)輸出結(jié)果:['Jack', 'Tom', 'Ribo', 'Jekiiy']
過(guò)濾函數(shù)格式:filter(函數(shù),可迭代參數(shù))
|
|
來(lái)自: 網(wǎng)摘文苑 > 《函數(shù)》