[Python] 内建函数filter, map, reduce

摘要:[Python] 内建函数filter, map, reduce


filter, map, reduce 都是针对集合对象处理的特殊函数。

可有助于python的数据处理以及程序简化。

filter()

Format: filter(function, sequence)

以传入的boolean function作为条件函数,iterate所有的sequence的元素并收集 function(元素) 为True的元素到一个List。

请参考下面例子:

>>> def fn(x):
...     return x if x > 5 else None
...
>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = filter(fn, a)
>>> b
[6, 7, 8, 9]

map()

Format: map(function, sequence)

iterate所有的sequence的元素并将传入的function作用于元素,最后以List作为回传值。

请参考下面例子:

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> def fn(x):
...     return x*2
>>> c = map(fn, a)
>>> c
[2, 4, 6, 8, 10, 12, 14, 16, 18]

reduce()

Format: reduce(function, sequence)

必须传入一个binary function(具有两个参数的函数),最后仅会回传单一值。

reduce会依序先取出两个元素,套入function作用后的回传值再与List中的下一个元素一同作为参数,以此类推,直到List所有元素都被取完。

请参考下面例子:

>>> a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> def fn(x, y):
...     return x+y
>>> d = reduce(fn, a)
>>> d
45

下面的图片辅助说明上面范例程序中的reduce()是如何作用的: