N:K%?8p2XCt0Python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力!
gY1CNu
P0
# -*- coding:utf-8 -*-51Testing软件测试网'}-Z6B u2XgZn
#
'e-g5?xY;|'lN)F6z0# This script. to show the usage of filter, map and reduce.51Testing软件测试网7Gii&r8\Dp
#
F`1b
k5oey-{a0# filter(function, sequence):对sequence中的item依次执行function(item),
cS6m,j%P!^G&W0# 将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回.51Testing软件测试网_Spgj/zBrJ
#3/18/2013 2:48:06 PM
def f_large_than_5(x):
Q!l0jpzZ0 return x > 5 51Testing软件测试网k%M8t*f`h/v
print filter (f_large_than_5, range(10))
def f2_3(x):51Testing软件测试网*U5qUf\3?W|J
return x % 2 != 0 and x % 3 != 0
7b D0P9WN%U/WO1o0print filter (f2_3, range(2, 25))
def f_Str(x):51Testing软件测试网0{"?!W N6T
i~K
return x != 'a'
4ZIfo@oL$riV0print filter(f_Str, "abcdef")
:Jy3q7|(`/c0#map(function, sequence) :对sequence中的item依次执行function(item),51Testing软件测试网v xexb
#将执行结果组成一个List返回51Testing软件测试网O4|qJn
i
def cube_number(x):
O&S}#o1`_p0 return x*x*x
8`W&Ui"s(g;n3F7?'s0print map(cube_number, range(1, 11))
def cube_str(x):
R,?1zX6A j N{*Ut0 return x+x51Testing软件测试网7EU
A/r:EfS
print map(cube_str, "abcde")
#map也支持多个sequence,这就要求function也支持相应数量的参数输入51Testing软件测试网6b6z.Rs
Z_Y'_7}
def add(x, y):
2_+p*i$o([zx0 return x+y51Testing软件测试网\ms[-F-h
print map(add, range(8), range(8))
51Testing软件测试网6QyY1AP6g-dX2I`!b
#reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,
_9`r?:K0#如果有starting_value,还可以作为初始值调用,例如可以用来对List求和51Testing软件测试网[ pat-}&_S^
def add(x,y):return x+y51Testing软件测试网)C1E|-wP&x"P
print reduce (add, range(1, 11))
B[P }1};Y0print reduce (add, range(1, 11), 20) #注:20+1+2+3+4+5+6+7+8+9+10
.D(R`
\;`w0#lambda:这是Python支持一种有趣的语法,它允许你快速定义单行的最小函数,
{/}?
Q0Ky8y"K Q0#类似与C语言中的宏,这些叫做lambda的函数,是从LISP借用来的,可以用在任何需要函数的地方
%o]:FA@5PF@0g = lambda x:x*251Testing软件测试网'W
Q'RU't(@
print g(5)
uH#n$X%R b
T0K1m3~3T0print (lambda x:x*2)(5)51Testing软件测试网.`%X3F:K D0DKj}f9v