Python常见内置高阶函数即高阶函数用法

目录
  • 1.什么是高阶函数?
  • 2.高阶函数-map、filter、reduce
    • 2.1map函数
    • 2.2filter函数
    • 2.3reduce函数

1.什么是高阶函数?

  高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数。

参数为函数:

#参数为函数
def bar():
    print("in the bar..")
def foo(func):
    func()
    print("in the foo..")

foo(bar)

返回值为函数:

#返回值为函数
def bar():
    print("in the bar..")
def foo(func):
    print("in the foo..")
    return bar
res=foo(bar)
res()

以上两个示例中,函数foo()为高阶函数,示例一中函数bar作为foo的参数传入,示例二中函数bar作为foo的返回值。

注:函数名(例如bar 、foo)-->其为该函数的内存地址;函数名+括号(例如 bar()、foo() )-->调用该函数。

2.高阶函数-map、filter、reduce

这三个函数均为高阶函数,其也为Python内置的函数。接下来我们看一下这三个函数的用法以及其内部原理是怎样的:

2.1map函数

map函数接收的是两个参数,一个函数,一个序列,其功能是将序列中的值处理再依次返回至列表内。其返回值为一个迭代器对象--》例如: <map object at 0x00000214EEF40BA8>

其用法如图:

 

接下来我们看一下map函数的机制是怎么样的:

num=[1,2,3,4,5]
def square(x):
    return x**2
#map函数模拟
def map_test(func,iter):
    num_1=[]
    for i in iter:
        ret=func(i)
        # print(ret)
        num_1.append(ret)
    return num_1.__iter__() #将列表转为迭代器对象

#map_test函数
print(list(map_test(square,num)))
#map函数
print(list(map(square,num)))

#当然map函数的参数1也可以是匿名函数、参数2也可以是字符串
print(list(map_test(lambda x:x.upper(),"amanda")))
print(list(map(lambda x:x.upper(),"amanda")))

2.2filter函数

filter函数也是接收一个函数和一个序列的高阶函数,其主要功能是过滤。其返回值也是迭代器对象,例如: <filter object at 0x000002042D25EA90>,

其图示如下:

接下来我们看一下filter函数的用法以及其机制是怎么样的:

names=["Alex","amanda","xiaowu"]
#filter函数机制
def filter_test(func,iter):
    names_1=[]
    for i in iter:
        if func(i): #传入的func函数其结果必须为bool值,才有意义
            names_1.append(i)
    return names_1
#filter_test函数
print(filter_test(lambda x:x.islower(),names))
#filter函数
print(list(filter(lambda x:x.islower(),names)))

2.3reduce函数

reduce函数也是一个参数为函数,一个为可迭代对象的高阶函数,其返回值为一个值而不是迭代器对象,故其常用与叠加、叠乘等,

图示例如下:

   

实例如下:

#reduce函数不是内置函数,而是在模块functools中的函数,故需要导入
from functools import reduce

nums=[1,2,3,4,5,6]
#reduce函数的机制
def reduce_test(func,array,ini=None): #ini作为基数
    if ini == None:
        ret =array.pop(0)
    else:
        ret=ini
    for i in array:
        ret=func(ret,i)
    return ret
#reduce_test函数,叠乘
print(reduce_test(lambda x,y:x*y,nums,100))
#reduce函数,叠乘
print(reduce(lambda x,y:x*y,nums,100))

到此这篇关于Python常见内置高阶函数即敢接函数用法的文章就介绍到这了,更多相关Python高阶函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python 内置高阶函数详细

    目录 1.Python的内置高阶函数 1.1 map() 1.2 reduce() 函数 1.3 reduce() 函数 1.4 sorted() 函数 1.Python的内置高阶函数 1.1 map() map()会根据提供的函数对指定序列做映射 语法格式: map(function, iterable, ...) 第一个参数function以参数序列中的每一个元素调用function函数, 第二个参数iterable一个或多个序列 返回包含每次 function 函数返回值的新列表. 示例代

  • 详解python内置常用高阶函数(列出了5个常用的)

    高阶函数是在Python中一个非常有用的功能函数,所谓高阶函数就是一个函数可以用来接收另一个函数作为参数,这样的函数叫做高阶函数. python内置常用高阶函数: 一.函数式编程 •函数本身可以赋值给变量,赋值后变量为函数: •允许将函数本身作为参数传入另一个函数: •允许返回一个函数. 1.map()函数 是 Python 内置的高阶函数,它接收一个函数 f 和一个 list, 并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回 def add(x): ret

  • Python高阶函数、常用内置函数用法实例分析

    本文实例讲述了Python高阶函数.常用内置函数用法.分享给大家供大家参考,具体如下: 高阶函数: 允许将函数作为参数传入另一个函数: 允许返回一个函数. #返回值为函数的函数 sum=lambda x,y:x+y sub=lambda x,y:x-y calc_dict={"+":sum,"-":sub} def calc(x): return calc_dict[x] print(calc('-')(5,6)) print(calc('+')(5,6)) #参数

  • Python常见内置高阶函数即高阶函数用法

    目录 1.什么是高阶函数? 2.高阶函数-map.filter.reduce 2.1map函数 2.2filter函数 2.3reduce函数 1.什么是高阶函数? 高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数. 参数为函数: #参数为函数 def bar(): print("in the bar..") def foo(func): func() print("in the foo

  • Python常见内置高效率函数用法示例

    本文实例讲述了Python常见内置高效率函数用法.分享给大家供大家参考,具体如下: 1.  filter(function,sequence) 将sequence中的每个元素,依次传进function函数(可以自定义,返回的结果是True或者False)筛选,返回符合条件的元素,重组成一个String,List,Tuple等(跟sequence一样) 示例 def func(x): return x%2==0 and x%3==0 filter(func,(3,6,8,12,15,21)) #(

  • Python常用内置函数和关键字使用详解

    目录 常用内置方法 查看所有的内置类和内置方法 标准输入输出 数学 序列 进制数转换 ASCII字符编码转换 其它 常用关键字 常见内置属性 常用内置方法 在Python中有许许多多的内置方法,就是一些Python内置的函数,它们是我们日常中经常可以使用的到的一些基础的工具,可以方便我们的工作. 查看所有的内置类和内置方法 # 方法一 built_list = dir(__builtins__) # 方法二 import builtins built_list = dir(builtins) 其

  • python学习——内置函数、数据结构、标准库的技巧(推荐)

    我作为一名python初学者,为了强化记忆有必要把看过的一些优秀的文章中一些技巧通过notebook的方式练习一次.我认为这么做有几个优点:一来加深印象:二来也可以将学习过的内容保存方便日后查阅:第三也可以培养我写博的习惯(一直都没那个习惯) jupyter notebook格式的文件github下载: 身为程序员除了需要具备解决问题的思路以外,代码的质量和简洁性也很关键,今天又学习到了一些觉得自己很高级的内容跟大家分享,内容包括: Python内置函数开始 Python对数据结构的天然支持 P

  • Python max内置函数详细介绍

    Python max内置函数 max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) Return the largest item in an iterable or the largest of two or more arguments. If one positional argument is provided, it should be an iterable. The largest item in the it

  • Python字符串内置函数功能与用法总结

    本文实例讲述了Python字符串内置函数功能与用法.分享给大家供大家参考,具体如下: 字符串内置总结 需要注意的是: 字符串的单引号和双引号都无法取消特殊字符的含义,如果想让引号内所有字符均取消特殊意义,在引号前面加r,如name=r'l\thf' unicode字符串与r连用必需在r前面,如name=ur'l\thf' 大小写处理 函数 作用 示例 输出 capitalize 首字母大写,其余小写 'lk with psr'.capitalize() 'Lk with psr' upper 全

  • JavaScript中常见内置函数用法示例

    本文实例讲述了JavaScript中常见内置函数用法.分享给大家供大家参考,具体如下: 一.介绍 在使用JavaScript语言时,除了可以自定义函数之外,还可以使用JavaScript的内置函数,这些内置函数是由JavaScript语言自身提供的函数. 二.一些常用的内置函数做详细介绍 1.parseInt()函数 该函数主要将首位为数字的字符串转化成数字,如果字符串不是以数字开头,那么将返回NaN. 语法: parseInt(StringNum,[n]) StringNum:需要转换为整型的

  • Python 利用内置set函数对字符串和列表进行去重的方法

    如下所示: # coding:utf8 __author__ = 'libingxian' __date = "20170415" # 由于数据类型set本身具有无序,唯一值的特性,可以用内置函数set对字符串和列表进行去重,挺方便的 str = "asdfasdlklfgklgjsdfjkjl" se = set(str) print se li = [1,"2",1,"2","abc","12

  • python enumerate内置函数用法总结

    这篇文章主要介绍了python enumerate内置函数用法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 enumerate()说明 enumerate()是python的内置函数 enumerate在字典上是枚举.列举的意思 对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值 enumerate多用于在for循环中得到计数 例如对于一个seq,得到:

  • Javascript 类型转换、封闭函数及常见内置对象操作示例

    本文实例讲述了Javascript 类型转换.封闭函数及常见内置对象.分享给大家供大家参考,具体如下: Javascript组成 1.ECMAscript javascript的语法(变量.函数.循环语句等语法) 2.DOM 文档对象模型 操作html和css的方法 3.BOM 浏览器对象模型 操作浏览器的一些方法 类型转换 1.直接转换 parseInt() 与 parseFloat() alert('12'+7); //弹出127 alert( parseInt('12') + 7 ); /

随机推荐