什么样的函数叫高阶函数:map(func, *iterables) --> map object
  条件:1.函数接受函数作为参数
     2.函数的返回值中包含函数
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
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 print(map_number(add_one,num_l))#map_number((lambda x:x+1),num_l) >>>[2, 3, 4, 5, 6, 7] 上述的代码其实就是map()函数!无意中完成了map内置函数!等价map((lambda x:x+1),num_l) 高阶函数之-filter filter(function or None, iterable) --> filter object
  
例子:
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是保留
满足函数逻辑的元素!
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 res = filter_test(sb_show,all_starts)
print(res)
无意中把filter函数构造出来了!说白了就是将可迭代对象array中的每个元素拿出来给前面的函数处理,处理结果是true的保留
处理结果是False的舍弃。
终极版本:ret = filter(lambda x:not x.startswith('sb'),array)
     print(list(ret))
   >>>['kobe', 'kg', 'ai', 'jorden', 'jamse'] 高阶函数之---reduce
from functools import reduce

高阶函数概念以及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. C# 嵌入第三方EXE界面到panel中

    C#可以通过windows API,将第三方程序嵌入到panel中,并且可以隐藏程序边框.问题:焦点在内部程序时,主窗口失去焦点:与内部EXE如何通讯? 代码如下: public partial cl ...

  2. C++内存管理3-探讨C++内存和回收

    1 C++内存对象大会战 如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛. 用C或C++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响着程序的效率和性 ...

  3. Flink Table Api & SQL 翻译目录

    Flink 官网 Table Api & SQL  相关文档的翻译终于完成,这里整理一个安装官网目录顺序一样的目录 [翻译]Flink Table Api & SQL —— Overv ...

  4. net core 环境部署的坑

    1.supervisor “no such file” error. 检查指令是否正确,路径.dotnet环境是否正常 2.Couldn‘t find a valid ICU package inst ...

  5. Toping Kagglers:Bestfitting,目前世界排名第一

    Toping Kagglers:Bestfitting,目前世界排名第一 Kaggle团队 |2018年5月7日   我们在排行榜上排名第一 - 这是两年前令人惊讶地加入该平台的竞争对手.Shubin ...

  6. org.apache.hadoop.conf.Configuration无法引用 解决方法

    我用的是Hadoop-common 2.6.4jar,可是明明包里面有这个类却引用不了,然后我看了下包里面是一个抽象类......................................... ...

  7. git merge合并分支; already up to date 现象, merger算法

    https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA% ...

  8. 24 AdminLTE 基础入门

    1.AdminLTE介绍 AdminLTE是一款建立在bootstrap和jquery之上的开源的模板主题工具,它提供了一系列响应的.可重复使用的组件,并内置了多个模板页面:同时自适应多种屏幕分辨率, ...

  9. 资源对象的池化, java极简实现,close资源时,自动回收

    https://www.cnblogs.com/piepie/p/10498953.html 在java程序中对于资源,例如数据库连接,这类不能并行共享的资源对象,一般采用资源池的方式进行管理. 资源 ...

  10. Leetcode Note

    算法刷题笔记 Leetcode-11. Container With Most Water Method: (对撞指针)每次保留两指针中最大的那个即可求得最大的面积 Runtime: 16 ms, f ...