1. 程式人生 > 實用技巧 >初學 Python 筆記【三十三】lambda函式

初學 Python 筆記【三十三】lambda函式

lambda函式也叫匿名函式,函式沒有具體的名稱。

語法:lambda argument_list: expression

  • argument_list是引數列表,相當於函式定義中的引數列表def(a, b=1, *args, **kwargs)
  • expression是關於引數的表示式。相當於函式中的函式體,並且表示式只能是單行的,可以為None

部分Python內建函式接收函式作為引數

filter函式。此時lambda函式用於指定過濾列表元素的條件。
print(list(filter(lambda x: x % 3 == 0, [1, 2, 3])))
指定將列表[1,2,3]中能夠被3整除的元素過濾出來,
結果是[3]。 注意:在python3中,filter, map, zip等返回可迭代的物件,返回的僅僅是一個元素,並不是一個列表,所以結果前需要使用 list sorted函式。此時lambda函式用於指定對列表中所有元素進行排序的準則。
print(sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x)))
將列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素與5距離從小到大進行排序, 結果是[5, 4, 6, 3, 7, 2, 8, 1, 9]。
map函式。此時lambda函式用於指定對列表中每一個元素的共同操作。
print(map(lambda x: x+1, [1, 2,3]))
將列表[1, 2, 3]中的元素分別加1, 結果是[2, 3, 4]。
reduce函式。此時lambda函式用於指定列表中兩兩相鄰元素的結合條件。
from functools import reduce
print(reduce(lambda a, b: '{}, {}'.format(a, b), [1, 2, 3, 4, 5]))
將列表 [1, 2, 3, 4, 5]中的元素從左往右兩兩以逗號分隔的字元的形式依次結合起來, 結果是'1, 2, 3, 4, 5'。 注意:reduce()函式在python2是內建函式,從python3開始移到了 functools 模組。
https://www.jianshu.com/p/039756507e95