• 高阶函数map_reduce_sorted_filter


    能够把函数当成参数传递的参数就是高阶函数

    map

     1 map:
     2 功能: 拿iterable的每一个元素放入func中,
     3      func的返回值放入迭代器内进行返回
     4 
     5 参数: iterable, func
     6 返回: 迭代器
     7 
     8 # ["a","c","b"]  => [97,99,98]
     9 dictvar = {97:"a",98:"b",99:'c',100:'d',101:'e'} 
    10 def func(x):
    11     print(1)
    12     for k, v in dictvar.items():
    13         if v == x:
    14             return k
    15 li  = ["a","c","b"]
    16 res = map(func, li)
    17 print(list(res))

    reduce

     1 # 需要导入
     2 from functools import  reduce
     3 """
     4 功能: 第一次拿出iterable的元素, 放入func中进行计算
     5      计算结果再和iterable的下一个元素传入func进行计算, 
     6      以此类推直到最后一个,计算的结果作为返回值返回
     7 参数: func iterable
     8 返回: 最后一次调用func的计算结果
     9 
    10 """
    11 
    12 # (1)[5,4,8,8]   =>   整型5488
    13 li = [5,4,8,8]
    14 def func(x, y):
    15    return x*10 + y
    16 res = reduce(func, li)
    17 print(res)

    sorted

    """
    功能: 把iterable的每一个元素放入func中获取返回值,
         按照返回值对原元素进行排序(不会修改原变量)
    参数: iterable, reverse(False默认从小到大), key=func
    返回值: 排序后的一个列表
    
    如果func返回值一样, 就按照字面顺序不动
    
    [-1, -11, 99, 89] 余数都是9, 
    排序后与原列表保持一致(无论正序倒序)
    """
    
    listvar = (3.14,56,-9,1)
    res = sorted(listvar, reverse=False) # 小到大
    res = sorted(listvar, reverse=True) # 大到小 
    print(res)
    
    # 使用abs()进行绝对值排序
    listvar = [-1,99,78,-33]
    res = sorted(listvar, reverse=True, key=abs)
    print(res)
    
    # 按照余数排序
    def func(x):
       return x % 10 
    listvar = [-1,99,78,-33]
    res = sorted(listvar, key=func)    
    print(res)

    filter

     1 """
     2 功能: 过滤,
     3    把iterable的每一个元素依次放入func, 
     4    返回True就保留, 返回False就丢弃
     5 参数: func, iterable
     6 返回: 过滤后的迭代器
     7 """
     8 
     9 listvar = [1,2,3,4,5,6,7,8,9]
    10 # 过滤所有的奇数 要偶数
    11 def func(x):
    12    if x % 2==0:
    13       return True
    14    return False
    15 
    16 res = filter(func, listvar)
    17 print(list(res))
    18 
    19 
    20 # 使用lambda简化
    21 res = filter(lambda x : True if x%2==0 else False, listvar)
    22 
    23 print(list(res))
  • 相关阅读:
    <亲测>CentOS7yum安装PHP7.2
    linux开机出现一下错误Give root password for maintenance (or type Control-D to continue):
    解决js输出汉字乱码问题
    <亲测>.NET Core项目在Linux上使用QRCoder时出错"Unable to load DLL 'gdiplus'"
    <亲测>阿里云centos7 挂载数据盘配置
    centos 磁盘清理 /dev/vda1系统盘满了
    两种方式:mysql查看正在执行的sql语句
    adb调试android设备 说的比较清楚的一篇文章
    <亲测>window+iis+letsencrypt+ssl 手动续期(通配符域名)
    申请免费通配符证书(Let's Encrypt)并绑定IIS
  • 原文地址:https://www.cnblogs.com/caihuajiaoshou/p/10611960.html
Copyright © 2020-2023  润新知