1. 什么样的函数叫高阶函数:map(func, *iterables) --> map object
      条件:1.函数接受函数作为参数
         2.函数的返回值中包含函数
  1. num_l = [1,2,3,4,5,6]
    b = map(lambda x:x**2,num_l)
    print(b)
    for i in b:
      print(i)
    >>> <map object at 0x0000023023782358> #返回map对象,是迭代器
      1
      4
      9
      16
      25
      36
  1. num_l = [1,2,3,4,5,6]
    def add_one(x):#也可以将lambda函数作为参数,等价于lambda x:x+1
    return x+1
    def reduce_one(x):
    return x-1
    def map_number(func,array):#传函数作为参数,将处理的功能封装
    ret = []
    for i in num_l:
    res = func(i) #add_one或者reduce_one
    ret.append(res)
    return ret
  2.  
  3. print(map_number(add_one,num_l))#map_number((lambda x:x+1),num_l)
  4.  
  5. >>>[2, 3, 4, 5, 6, 7]
  6.  
  7. 上述的代码其实就是map()函数!无意中完成了map内置函数!等价map((lambda x:x+1),num_l)
  8.  
  9. 高阶函数之-filter filter(function or None, iterable) --> filter object
      
    例子:
  1. all_starts = ['kobe','kg','ai','jorden','jamse','sb_zhouqi','sb_guoailun']
    def filter_test(array):
    ret = []
    for i in array:
    if not i.startswith('sb'):
    ret.append(i)
    return ret
    res = filter_test(all_starts)
    print(res)
    >>>['kobe', 'kg', 'ai', 'jorden', 'jamse']
    上面的例子可以看出,处理的逻辑还是通过for循环来实现的,但是如果处理的不是以sb开头怎么办?处理以XX为中间的怎么办?
    所以此时处理的逻辑可以单独写成函数,就会很好用,如同上面的map函数,你给我处理逻辑的函数和要处理的可迭代对象,我就给你处理!
    唯一的不同是此时的逻辑是判断bool,通过True或者False来过滤,除去函数逻辑中的元素,此时filter函数应运而生!而filter是保留
    满足函数逻辑的元素!
  1. all_starts = ['kobe','kg','ai','jorden','jamse','sb_zhouqi_sb','sb_guoailun_sb']
    def sb_show(n):
    return n.endswith('sb')
    def filter_test(func,array):
    ret = []
    for i in array:
    if not func(i):
    ret.append(i)
    return ret
  2.  
  3. res = filter_test(sb_show,all_starts)
    print(res)
  1. 无意中把filter函数构造出来了!说白了就是将可迭代对象array中的每个元素拿出来给前面的函数处理,处理结果是true的保留
    处理结果是False的舍弃。
    终极版本:ret = filter(lambda x:not x.startswith('sb'),array)
         print(list(ret))
       >>>['kobe', 'kg', 'ai', 'jorden', 'jamse']
  2.  
  3. 高阶函数之---reduce
    from functools import reduce
  4.  

  1.  

高阶函数概念以及map/filter/reduce的更多相关文章

  1. python 高阶函数学习, map、reduce

    一个函数可以接收另一个函数作为参数,这样的函数叫做高阶函数. 函数map(): map()函数接收两个参数,一个是函数,一个是Iterable, map把函数作用于序列的每一个元素,并把结果作为Ite ...

  2. 【Python学习之六】高阶函数1(map、reduce、filter、sorted)

    1.map map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回.示例: >>> def ...

  3. 【Python学习之六】高阶函数2(map、reduce、filter、sorted)

    3.filter filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素.相当于一 ...

  4. Python——高阶函数概念(Higher-order function)

    1.变量可以指向函数 以内置的求绝对值abs()函数为例,: >>> abs(-12) 12 >>> abs <built-in function abs&g ...

  5. Python高阶函数map、reduce、filter、sorted的应用

    #-*- coding:utf-8 -*- from selenium import webdriver from selenium.webdriver.support.wait import Web ...

  6. JavaScript学习笔记(十)——高阶函数之map,reduce,filter,sort

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  7. 高阶函数---swift中的泛型介绍(一步步实现Map函数)

    说明 本文内容均出自函数式 Swift一书, 此处整理仅仅是为了自己日后方便查看, 需要深入研究的话, 可以点进去购买, 支持原作者 本书由 王巍–新浪微博大神翻译 OneV's Den 喵神博客 接 ...

  8. python六十课——高阶函数之map

    1.高阶函数: 特点:函数的形参位置必须接受一个函数对象 分类学习: 1).map(fn,lsd1,[lsd2...]): 参数一:fn --> 函数对象 参数二:lsd1 --> 序列对 ...

  9. js高阶函数的理解

    高阶函数:英文叫Higher-order function.JavaScript的函数其实都指向某个变量.既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数 ...

随机推荐

  1. 泡泡一分钟:Robust Attitude Estimation Using an Adaptive Unscented Kalman Filter

    张宁 Robust Attitude Estimation Using an Adaptive Unscented Kalman Filter 使用自适应无味卡尔曼滤波器进行姿态估计链接:https: ...

  2. CKA认证简介

  3. react一些问题

    一.死循环 1.问题描述 function handleClick() { this.setState({count: ++this.state.count}); console.log(" ...

  4. Redis 分布式锁,C#通过Redis实现分布式锁(转)

    目录(?)[+] 分布式锁一般有三种实现方式: 可靠性   分布式锁一般有三种实现方式: 1. 数据库乐观锁; 2. 基于Redis的分布式锁; 3. 基于ZooKeeper的分布式锁.本篇博客将介绍 ...

  5. WPS应用技巧

    打开云文档的文件:文件-打开-我的云文档 (选择时的文档为PDF时仅扫描PDF文件)

  6. nginx 进程问题

    1 nginx的进程分为四种 master worker cacheLoader cacheManager. 实际接收请求的进程是 worker,master监控worker节点,之所以会多进程模式, ...

  7. [转帖]Beyond compare4密钥

    Beyond compare4密钥 https://blog.csdn.net/lemontree1945/article/details/92963423 学习一下 最近想破解水卡.... w4G- ...

  8. spring data jpa碰到的坑

    1.不能从别的类的repository那里 执行另一个类的sql,这样映射会失败. 2.有entity,就要有repository,并且还要有id注解 3.还要多表联查未测试,估计要用map去映射出来 ...

  9. Label&Button

    Button中的bg参数设置按钮背景颜色,fg参数设置字体颜色 pack中的fill参数告诉Packer让QUIT按钮占据剩余的水平空间,而expand参数则引导它填充整个水平可视空间,将按钮拉伸到左 ...

  10. 1. Spark GraphX概述

    1.1 什么是Spark GraphX Spark GraphX是一个分布式图处理框架,它是基于Spark平台提供对图计算和图挖掘简洁易用的而丰富的接口,极大的方便了对分布式图处理的需求.那么什么是图 ...