1.map(function,seq1,seq2...)->list:根据给定的函数给指定的序列(依据function的参数 给出指定个数的序列)做映射,例如:
>>> map(str,range(10))
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> map(lambda x:x**2,range(5)) #lambda创建短小函数
[0, 1, 4, 9, 16]
>>> map(lambda x,y:x+y,[1,2,3],[4,5,6]) #function函数数量要和集合数量相匹配例如:x,y对应两个集合
[1,2,3],[4,5,6] [5, 7, 9]
>>> map(None,[1,2,3],[4,5,6]) #
如果function为None,则返回序列对[(1,4)(2,5)(3,6)],与zip类似。
[(1, 4), (2, 5), (3, 6)]
2.reduce(function or None,seq1,initial)->value:对参数序列中的元素进行积累。function为两个参数的函数,initial为给定的初始值。例如
>>> reduce(lambda x,y:x+y,[1,2,3,4],10) #
reduce实现的功能是从seq中一次取值与上一次function产生的值作为function的参数。
20 #10+1 ->11+2->13+3->16+4=20
在没有设定initial时,就以seq中的第一个和第二个值开始,例如:
>>> reduce(lambda x,y:x+y,[1,2,3,4])
10
>>> reduce(None,[3,2,1]) #reduce函数中function不能为None!
Traceback (most recent call last):
File "
", line 1, in
reduce(None,[3,2,1])
TypeError: 'NoneType' object is not callable
3.filter(fuction or None,seq)->list,tuple,string 基于一个返回bool值得函数对seq进行过滤,也就是seq中每个元素调用unction,返回为Ture的参数组成list,tuple,string最终返回。
例如:
>>> filter(lambda x:x%2==0,[1,2,3,4])
[2, 4]
def fun(x):return x%2 = 0
filter(fun,[1,2,3,4]) ->[1,3]#返回的类型与参数类型一致
阅读(654) | 评论(0) | 转发(0) |