高阶函数
把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。Python还不算纯粹的函数式编程
- map()
# map()函数 ''' map()函数介绍: map()函数接收两个参数:一个是函数(该函数只能有一个参数),一个是序列(list,tuple) 作用:map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。 ''' def addNumber(x): return 2 * x r = map(addNumber, (1,2,3)) print r ''' 运行结果 [2, 4, 6] '''
reduce()
# reduce()函数 ''' reduce()函数介绍: reduce()函数接受两个参数:一个是函数(该函数只能有两个参数),一个是序列(list,tuple) 作用:把结果继续和序列的下一个元素做累积计算 ''' def product(x, y): return x * y total = reduce(product, [1,2,3]) print total ''' 运行结果 6 '''
filter()
python自带的,可以自己自定义过滤规则,很有用的一个函数
# filter()函数
'''
filter()函数介绍:
filter()函数接受两个参数:一个是函数(该函数只能有一个参数),一个是序列(list,tuple)
作用:filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
'''
def filterAge(dict):
if 'age' in dict:
age = dict['age']
if age < 20:
return False
return True
return False
resultList = filter(filterAge,({'name':'Pocket','age':23, 'sex':'man'},\
{'name':'Baby', 'age':22, 'sex':'woman'},\
{'name':'you', 'age':17, 'sex':'man'}))
print resultList
'''
运行结果
({'age': 23, 'name': 'Pocket', 'sex': 'man'}, {'age': 22, 'name': 'Baby', 'sex': 'woman'})
'''
- sorted()
排序函数,可以自己自定义排序规则
# sorted() 函数
l = [2,3,6,8,0,12,54,76]
sor = sorted(l) # 默认是按从小到大排序
print sor
def reverse(x, y): # 定义一个方法,用作sorted函数的参数
if x < y: # 将默认的规则反过来返回,达到倒序的结果
return 1
elif x > y:
return -1
else:
return 0
rev = sorted(l,reverse) # 灵活运用自定义排序函数可以达到出人意料的效果
print rev
'''
运行结果
[0, 2, 3, 6, 8, 12, 54, 76]
[76, 54, 12, 8, 6, 3, 2, 0]
'''