常用的高阶函数
filter(function, iterable)
function:函数(function 必需能够接受1个实参),也可以为 None iterable:可迭代对象 将 iterable 中每个元素作为参数传递给函数,根据函数的返回结果进行判断 True或 False,将判断为 True 的 iterable 中的元素构建新的迭代器并返回 如果 function 为 None,直接判断 iterable 中元素 True 或 False,再返回为 True的元素构建的新的迭代器
object1 = filter ( lambda x: x- 1 , [ 1 , 2 , 3 , False , 4 ] )
print ( list ( object1) )
object3 = filter ( None , [ 1 , 2 , 0 , 3 , False , 4 ] )
print ( list ( object3) )
map(func, *iterables)
func:函数(func 必需能够接收 iterables 个数的实参) iterables:可迭代对象 用 iterables 中的每个元素作为函数的参数来调用函数,以迭代器形式返回所有结果 当有多个 iterables 对象时,最短的 iterables 耗尽则函数停止
def square ( a) :
return a** 2
result = map ( square, [ 1 , 2 , 3 ] )
print ( list ( result) )
result = map ( lambda a: a** 2 , [ 1 , 2 , 3 ] )
print ( list ( result) )
result = list ( map ( float , [ "1" , "2" , "3" ] ) )
print ( result)
result = list ( map ( lambda x, y, z: x+ y+ z, [ 1 , 2 , 3 ] , [ 3 , 2 , 1 ] , [ 1 , 3 , 2 ] ) )
print ( result)
result = list ( map ( lambda x, y, z: x+ y+ z, [ 1 , 2 , 3 ] , [ 3 , 2 , 1 ] , [ 1 , 3 ] ) )
print ( result)
reduce(function, iterable[, initial])
function:函数(function 必需能够接收两个实参) iterable:可迭代对象 initial:初始值 在 Python2 中 reduce() 是内置函数,而在Python3中 reduce() 函数是在functools模块中的,所以在使用的时候需要先导入 functools 模块 在没有指定 initial 参数时,先把 iterable 的前两个元素作为参数调用函数,把这次函数的结果以及iterable 的下一个元素又作为参数再调用函数,以此类推 在指定 initial 参数时,先把 initial 值和 iterable 的第一个元素作为参数调用函数,把这次函数的结果以及 iterable 的下一个元素又作为参数再调用函数,以此类推 如果iterable为空,返回initial,此时如果没有指定initial,则报错 如果iterable只有一个元素且没有指定initial,返回该元素
from functools import reduce
def add ( m, n) :
s = m + n
return s
result = reduce ( add, [ 1 , 2 , 3 , 4 ] )
print ( result)
result = reduce ( lambda x, y: 2 * x + y, [ 1 , 2 , 3 ] , 5 )
print ( result)
result = reduce ( lambda x, y: 10 * x + 2 * y, [ ] , 123 )
print ( result)
result = reduce ( lambda x, y: 10 * x + 2 * y, [ 123 ] )
print ( result)
result = reduce ( lambda x, y: 10 * x + 2 * y, [ 123 ] , 2 )
print ( result)