高阶函数

把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式。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]
'''

results matching ""

    No results matching ""