lambda
lambda 语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。 lambda 语句构建是一个函数对象:
In [1]: f = lambda x: x * 2
In [2]: f(8)
Out[2]: 16
In [3]: f
Out[3]: <function __main__.<lambda>>
filter
filter(function or None, sequence) -> list, tuple, or string
返回序列中 function(item) 为 true 的项目。如果 fuction 为 None ,那么就返回 测试结果为 true 的项目。如果序列的类型为 tuple 或者 string ,那么返回相同的 类型;其他的则返回 list:
In [4]: foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
In [5]: filter(lambda x: x % 3 == 0, foo)
Out[5]: [18, 9, 24, 12, 27]
map
map(function, sequence[, sequence, …]) -> list
返回一个 list ,其内容为把序列中的每一个值作为函数的参数得到的函数的返回值:
In [6]: map(lambda x: x * 2 + 10, foo)
Out[6]: [14, 46, 28, 54, 44, 58, 26, 34, 64]
如果使用序列,那么函数会把每个序列相应的值作为参数,序列长度不够的则会以 None 来补充:
In [1]: lista = [1, 2, 3, 4, 5]
In [2]: listb = [1] * 4
In [3]: map(lambda x,y:"%s|%s"%(x,y), lista, listb)
Out[3]: ['1|1', '2|1', '3|1', '4|1', '5|None']
如果 function 为 None ,那么返回一个由序列项目组成的 list (如果是多个序列, 那么返回一个 list , 其每个项目为由每个序列相应项目组成的 tuple:
In [9]: nfc = ["Packers", "49ers"]
In [10]: afc = ["Ravens", "Patriots"]
In [11]: map(None, nfc, afc)
Out[11]: [('Packers', 'Ravens'), ('49ers', 'Patriots')]
reduce
reduce(function, sequence[, initial]) -> value
Apply a function of two arguments cumulatively to the items of a sequence, from left to right, so as to reduce the sequence to a single value. For example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). If initial is present, it is placed before the items of the sequence in the calculation, and serves as a default when the sequence is empty:
In [9]: reduce(lambda x, y: x + y, foo)
Out[9]: 139
reduce 函数在 python3 中已经不属于 build-in 了,而是在 functools 模块下, 如需使用,需要从 functools 模块中引入。