Python中特殊函数和表达式 filter,map,reduce,lambda

1. filter(function, sequence):

对sequence中的元素执行function函数,返回由function函数执行结果为True的元素组成的序列,注意新序列类型与传入序列相同

测试:返回正数

#!/usr/bin/env python

def findPositiveNum(num):
    if num > 0:
        return True
    else:
        return False

nums = (3,2,1,0,-1,-2,-3)

result = filter(findPositiveNum, nums)

print result

结果:

(3, 2, 1)

2. map(function, sequence):

对sequence中的元素执行function函数,返回由function函数执行结果为元素组成的序列,如果function支持多个参数,map同样可以传递多个sequence,注意新序列类型为List

测试:对序列元素+1

 1 #!/usr/bin/env python
 2 
 3 def numPlusOne(num):
 4     return num + 1
 5 
 6 nums = (3,2,1,0,-1,-2,-3)
 7 
 8 result = map(numPlusOne, nums)
 9 
10 print result

结果:

[4, 3, 2, 1, 0, -1, -2]

3. reduce(function, sequence, starting_value):

对sequence中的元素迭代执行function函数,同时支持starting_value作为初始值

测试:以100为初始值计算序列和

#!/usr/bin/env python

def addNum(num1, num2):
    return num1 + num2

nums = (4,3,2,1,0,-1,-2,-3)

result = reduce(addNum, nums, 100)

print result

结果:

104

4. lambda:

使用lambda表达式可以定义一个匿名函数

 测试:对传入值做加法

#!/usr/bin/env python


addNum = lambda x : x + 2
result = addNum(1)
print result

print (lambda x: x + 2)(1)

结果:

3
3
原文地址:https://www.cnblogs.com/wanpengcoder/p/5293647.html