map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。
# map函数相当于map_test函数的演变 num1=[1,2,12,23,34,45] def map_test(func,arrary): #func=lambda x:x+1 arrary=[1,2,12,23,34,45] ret=[] for i in arrary: res = func(i) ret.append(res) return ret print(list(map_test(lambda x:x+1 ,num1))) #lambda匿名函数,lambda x:x+1等价于y=x+1,其中x是自变量x,x+1是因变量y # 调用默认map函数可以省事很多 res=map(lambda x:x+1,num1) print('内置函数map处理的结果',list(res))
结果
[2, 3, 13, 24, 35, 46]
内置函数map,处理结果 [2, 3, 13, 24, 35, 46]
filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
#filter函数的演变 movie_people=['baiyuechu_sb','honghong_sb','luolan','pingqiuyuechu_sb'] def filter_test(func,array): ret=[] #定义一个空列表 for p in array: if not func(p): ret.append(p) return ret res=filter_test(lambda n:n.endswith('sb'),movie_people) print(res) #filter函数 movie_people=['baiyuechu_sb','honghong_sb','luolan','pingqiuyuechu_sb'] print(list(filter(lambda n:not n.endswith('sb'),movie_people)))
结果
['luolan'] ['luolan']
reduce() 函数会对参数序列中元素进行累积。
函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
#reduce函数的演变 num_l=[1,2,3,100] def reduce_test(func,array,init=None): #inti代表初始值具体名称如reduce(function, iterable[, initializer]) if init is None: res=array.pop(0) #pop(0)取第一个数 else: res=init for num in array: res=func(res,num) return res print(reduce_test(lambda x,y:x*y,num_l,100)) #reduce函数 from functools import reduce num_l=[1,2,3,100] print(reduce(lambda x,y:x+y,num_l,1)) print(reduce(lambda x,y:x+y,num_l))
结果
60000 107 106