apply(func[,nkw][,kw]) 用可选的参数来调用func,nkw为非关键字参数,kw为关键字参数;返回值是函数调用的返回值。
例:
import random seq = range(10) random.shuffle(seq); print seq seq2 = range(10) random.shuffle(seq2) print seq2 print apply(lambda x:x**2,[2]) print apply(lambda x,y:x+y,[2,4]) print apply(lambda x,y,z:x**2+y**2+z**2,[2,3,4])[2, 7, 3, 8, 1, 9, 4, 6, 5, 0]
[0, 4, 8, 1, 6, 5, 7, 2, 9, 3]
4
6
29
filter(func,seq) 调用一个布尔函数func来遍历迭代每一个seq中的元素;返回一个是func返回值为ture的元素的序列。
print filter(lambda x: x%2,seq)[7, 3, 1, 9, 5]
map(func,seq1[,seq2...]) 将函数func作用于给定序列s的每个元素,并用以个列表来提供返回值;如果func为None,func表现为一个身份函 数,返回一个含有每个序列中元素集合的N个原始的列表。
print map(lambda x:x**2+2*x+1,seq) print map(lambda x,y:x+y,seq,seq2) print map(lambda x,y:(x+y,x-y),seq,seq2)[7, 3, 1, 9, 5]
[9, 64, 16, 81, 4, 100, 25, 49, 36, 1]
[2, 11, 11, 9, 7, 14, 11, 8, 14, 3]
[(2, 2), (11, 3), (11, -5), (9, 7), (7, -5), (14, 4), (11, -3), (8, 4), (14, -4), (3, -3)]
reduce(func,seq[,init])将二元函数作用与seq序列的元素,每次携带一堆,连续地将现有的结果和下一个值作用在获得的随后的结果上,最后减少我们的序列为一个单一的返回值;如果初始值init给定,第一个比较会是init和第一个序列元素而不是序列的头两个元素。
print reduce(lambda x,y:x+y,seq,0) # cal summation i print reduce(lambda x,y:x+y,seq) # cal summation ii print seq print reduce(lambda x,y:y-x,seq) print reduce(lambda x,y:2*x+3*y,seq,0)45
45
[2, 7, 3, 8, 1, 9, 4, 6, 5, 0]
15
11862
def str2int(s): return reduce(lambda x,y:x*10+y,map(int,s)) print str2int('13877')13877