02-高阶函数 map filter sorted

什么是高阶函数
   满足下列条件中一个的函数即为高阶函数
      1. 函数接受一个或多个函数作用参数传入
      2. 函数返回一个函数

map 函数
  map(func, *iterable)  返回一个可迭代对象,此可迭代
       对象用函数 func对可迭代对象iterable中的每一个
       元素作用参数计算后得一结果,当最短的一个可迭代对
       象不再提供数据时可迭代对象生成数据结束
  示例:
    def power2(x):
        return x ** 2
    # 生成一个可迭代对象,此可迭代对象可以生成1~9的
    # 整数的平方
    for x in map(power2, range(1, 10)):
        print(x)
    # 生成一个可迭代对象, 此可迭代对象可以生成:
      1**4, 2**3, 3**2, 4**1
      
    def mypower2(x, y):
        return x ** y

    for x in map(mypower2,[1,2,3,4],[4,3,2,1]):
        print(x)
    # 看懂下面程序在做什么:
    for x in map(pow, [1,2,3,4], [4,3,2,1],
                 range(5, 10)):
        print(x)

练习:
  1. 求:
    1**2 + 2**2 +3**2 +...+9**2的和
  2. 求:
    1**3 + 2**3 +3**3 +...+9**3的和
  3. 求:
    1**9 + 2**8 + 3**7 + ... + 9**1的和


filter函数:
  filter(function, iterable)   返回一个可迭代对象
        此可迭代对象将iterable提供的数据用函数function
        进行筛选,function将对iterable中的每个元素求值
        返回False将此数据丢弃,返回True则保留
  示例:
    def isodd(x):
       return x % 2 == 1
    # 打印0~10之间所有的奇数:
    for x in filter(isodd, range(11)):
        print(x)
    for x in filter(lambda x:x%2, range(11)):
        print(x)
    
    L = [x for x in filter(isodd, range(11))]


sorted函数
  作用:
    将原可迭代对象提供的数据进行排序, 生成排序后的列表
  格式说明
    sorted(iterable, key=None, reverse=False)
    返回一个新的包含所有可迭代对象中数据的列表,新的列表
    是排序过的列表
  参数说明:
    iterable  可迭代对象
    key     函数是用来提供一个值,这个值将作用排序的依据
    reverse  标志用来设置是否降序排序(默认为升序))
  示例:
    L = [5, -2, -4, 0, 3, 1]  
    L2 = sorted(L)  # L2=[-4, -2, 0, 1, 3, 5]
    L3 = sorted(L, reverse=True)  # 从大到小排序

    L4 = sorted(L, key=abs)  # L4=[0, 1, -2, 3, -4, 5]
                             # 依据 0, 1,  2, 3,  4, 5

    names = ['Tom', 'Jerry', 'Spike', 'Tyke']
    sorted(names)  # ['Jerry', 'Spike', 'Tom', 'Tyke']
    sorted(names, key=len)
    sorted(names, key=len, reverse=True)

练习:
  names = ['Tom', 'Jerry', 'Spike', 'Tyke']
  排序的依据是:
           'moT'   'yrreJ'  'ekipS'  'ekyT'
  结果: ['Spike', 'Tyke', 'Tom', 'Jerry']

  

posted @ 2019-12-29 20:10  taysem  阅读(158)  评论(0编辑  收藏  举报