当在使用一些函数的时候,咱们不须要显式定义函数名称,直接传入lambda匿名函数便可。lambda匿名函数一般和其余函数搭配使用。
好比能够直接使用以下的lambda表达式计算当x=3时,y = x * 3 + 5的函数值。函数
In [1]: (lambda x: x * 3 + 5)(3) Out[1]: 14
map函数将一个函数和序列/迭代器(能够传入多个)做为参数,应用函数到序列中的每一个元素,返回一个迭代器。测试
In [4]: a = list(range(5)) In [5]: b = list(range(2, 7)) # 结合lambda匿名函数,对a列表中的每一个元素,计算x * 3 + 5的函数值 In [6]: list(map(lambda x: x * 3 + 5, a)) Out[6]: [5, 8, 11, 14, 17] In [9]: def add(x, y): ...: return x+y # 传入多个序列,a、b两个序列中的对应元素依次传入函数add中进行计算 # Note: a、b两个序列的长度能够不相等 In [10]: list(map(add, a, b)) Out[10]: [2, 4, 6, 8, 10]
filter函数(filter(func, seq))借助一个函数来测试序列/迭代器中每一个元素的真假,返回一个过滤后的迭代器。code
In [18]: a = list(range(5)) In [19]: def isodd(number): ...: if number % 2 == 0: ...: return False ...: return True ...: In [20]: filter(isodd, a) Out[20]: <filter at 0x1a6dc460748> # 过滤掉全部偶数 In [21]: list(filter(isodd, a)) Out[21]: [1, 3]
reduce函数传入一个函数和序列/迭代器,它将滚动计算序列中元素,返回单个结果。例如要计算一个列表全部元素的和。排序
In [23]: from functools import reduce In [24]: a = list(range(5)) In [25]: sum = reduce((lambda x, y: x + y), a) In [26]: sum Out[26]: 10
sorted(iter, key, reverse=False), 高级排序函数,能够根据key实现自定义排序。reverse=False表示默认排序结果升序。字符串
# 好比按照a中每一个字符串最后的数字大小,降序排序 In [30]: a Out[30]: ['fasad_2', 'fadfc_4', '7hdc_0', 'ncsl_1', 'fai_3'] In [32]: sorted(a, key=lambda x: int(x[x.rindex('_') + 1:]), reverse=True) Out[32]: ['fadfc_4', 'fai_3', 'fasad_2', 'ncsl_1', '7hdc_0']