
Python高阶函数1。map函数map function,它接收两个参数,第一个参数是函数对象(当然也可以是lambda表达式),第二个参数是序列。
它能实现什么功能?我举个例子让你明白。
Map (lambda x: x * 2,[1,2,3,4,5]) [2,4,6,8,10]可以清楚地看到,它可以将下面序列中的每一个元素作为参数传入lambda。
当我们不使用map函数时,你可能会这样写。
Mylist=[] for ii in [1,2,3,4,5]: Mylist。追加(I * 2) 2。过滤函数过滤函数,类似于贴图函数。它还接收两个参数,一个lambda表达式和一个序列。它将遍历以下序列中的每个元素,并将其作为参数传递给lambda表达式。当表达式返回True时,元素将被保留,当表达式返回False时,元素将被丢弃。
下面的例子将过滤掉列表中小于0的元素。
filter(lambda x:x ^ 0,range (-5,5)) [-5,-4,-3,-2,-1] 3。reduce函数reduce函数是类似的。它的作用是对序列中的前1、2个元素进行运算,然后用lambda函数对结果与第三个数据进行运算,再对结果与第四个元素进行运算,以此类推,直到后面没有元素为止。
这里举个例子你就明白了。
Reduce (lambda x,y: x y,[1,2,3,4,5]) 15其运算过程分解如下。
1 2=33 3=66 4=1010 5=154.注意上面的函数,熟练掌握它们的写法,可以让我们的代码看起来更有诗意,某种程度上也更简洁。
如果你是新手,你要注意上面的例子是在Python2.x环境下演示的。在Python3.x中,就不一样了。你可以自己试试。
这里总结一下:
首先,map和filter函数返回迭代器对象,而不是列表。这里以地图为例。
Map _ obj=集合中的map (lambda x: x * 2,[1,2,3,4,5])。ABC导入迭代器isinstance (map _ obj,iterator)True next(map _ obj)2 list(map _ obj)[4,6,8,11]。
从functools导入减少审核付干江









