map函数
用于接收一个函数及多个迭代对象,会根据提供的函数对指定序列做映射,然后返回一个新的map对象
例1:需要一个参数
a = map(lambda x:x*x,[1,2,3]) print(a)
输出结果:
<map object at 0x00FA73D0>
此时a指向于map出的新对象,可以使用list(a)或for循环查看,输出结果为:
[1, 4, 9]
函数运行过程:每次从列表中取一个值,赋值给x,通过lambda的表达式之后,通过map新建一个列表对象。
即:
1*1 = 1 2*2 =4 3*3 =9
例2:需要多个参数
a = map(lambda x,y:x+y,[1,2,3],[4,5,6]) print(list(a))
输出结果:
[5, 7, 9]
函数运行过程:每次从[1,2,3]列表中取一个值赋值给x,同时从[4,5,6]列表中取一个值赋值给y,并通过lambda表达式之后,通过map新建一个列表对象。
即:
1+4 = 5 2+5 =7 3+6 =9
例3:调用自定义函数
list1 = [0,1,2,3,4,5,6] list2 = ['Sun','M','T','W','T','F','S'] def TestMap(x,y): return (x,y) list3 = map(TestMap,list1,list2) print(list(list3))
输出结果:
[(0, 'Sun'), (1, 'M'), (2, 'T'), (3, 'W'), (4, 'T'), (5, 'F'), (6, 'S')]
函数运行过程同上。
Filter函数
用于过滤可迭代对象中不符合条件的元素,返回由符合条件元素组成的filter对象
filter(function or None,sequence)
其中: function:接收一个参数,返回布尔值True或False
None: 则无需过滤,直接输出
sequence: 可迭代对象,可以是str,tuple,list
例1:
l1 = filter(lambda x:x%2,[1,2,3,4]) print(list(l1))
输出结果:
[1, 3]
函数运行过程:每次从列表中取一个值,赋值给x,通过lambda的表达式对2取余,如余为0为False,非0为True。
即:[1,3]
例2:
l1 = filter(None,"test") print(list(l1))
输出结果为:
['t', 'e', 's', 't']函数运行过程:None代表着无需过滤,直接filter新对象
reduce函数
对参数序列中元素进行累积。注:使用时应先导入from funtools import reduce
例1:
from functools import reduce def TestReduce(x,y): return x+y a = reduce(TestReduce,["aa","bb","cc"],"dd") print(a)
输出结果:
ddaabbcc
函数运行过程:其中"dd"为初始值传给TestReduce中x, 每次从列表中取一个值赋值给y,并把结果返回赋值给x。
例2:
from functools import reduce a = reduce(lambda x ,y:x+y,[1,2,3,4],5) print(a)
输出结果:
15
函数运行过程: 将初始值5赋值给x,每次从列表中取一个值赋值给y,通过lambda表达式运行后,将结果返回赋值给x,再进行下一次运行。
即:
5+1 = 6 6+2 = 8 8+3 = 11 11+4 = 5
例3:
from functools import reduce def add(x,y): return x+y a = reduce(add,range(0,101)) print(a)
输出结果:
5050