匿名函数lambda
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边是返回值。
def f(x,y):
    return x+y
print f(2,3)
# 5
g = lambda x,y:x+y
print g(2,3)
# 5

reduce 逐次操作列表的每一项,接受的参数为两个,最后返回一个结果 
def add(x,y):
    return x+y
print reduce(add,xrange(1,10))
# 45
print reduce(lambda x,y:x+y,xrange(1,10))
# 45

map函数
map函数会根据提供的函数对指定序列做映射。
print map(lambda x: x ** 2, xrange(1,6))    对一个序列中的每个元素进行平方运算
# [1, 4, 9, 16, 25]
print map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
# [3, 7, 11, 15, 19]
print map(None,[1, 3, 5, 7, 9], [2, 4, 6, 8, 10])   当函数为None时,操作和zip相似
# [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10)]

filter函数
filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果包含调用结果为True的元素。
def is_even(x):
    if x%2==0:
        return True
    return False
print filter(is_even,xrange(1,11))  #返回偶数
# [2, 4, 6, 8, 10]
print filter(lambda x:x%2,xrange(1,11))  #返回奇数
# [1, 3, 5, 7, 9]
如果function参数为None,返回结果和sequence参数相同。

zip函数
取出每一个数组的元素,然后组合
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)
print xyz
# [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
print zip(*xyz)   # 解zip函数
# [(1, 2, 3), (4, 5, 6), (7, 8, 9)]

results matching ""

    No results matching ""