Python特殊语法:filter、map、reduce、lambda

上一篇 / 下一篇  2013-03-18 15:49:51 / 个人分类:Python

我的栏目
  • 栏目:Python

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 k5oe y-{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!l0jpz Z0    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 xex b
#将执行结果组成一个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@5P F@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

TAG: Python python

 

评分:0

我来说两句

Open Toolbar