递归函数

  在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。使用递归函数的优点是逻辑简单清晰,缺点就是过深的调用会导致栈溢出。但是针对尾递归优化的语言可以通过尾递归防止栈溢出。尾递归事实上和循环是等价的,没有循环语句的编程语言只能通过尾递归实现循环。

"""尾递归"""
# 尾递归是指在函数返回的时候,调用自身本身,并且return语句不能包含表达式。 def fact(n):
return fact_iter(n, ) def fact_iter(num, product):
if num == :
return
return fact_iter(num-, num*product) """普通递归""" def fact1(n):
if n == :
return
return n*fact(n-)

匿名函数:lambda

  除了def语句外,python还提供了一种生成函数对象的表达式。就像def一样,这个表达式创建了一个之后能调用的函数,但是他返回了一个函数而不是将这个函数赋值个一个变量。这也就是lambda有时叫做匿名函数的原因。实际上,他们常常以一种行内进行函数定义的形式使用,或者用作推迟执行一些代码。lambda可作为def的速写。

"""lambda匿名函数操作"""

# lambda返回一个函数,可以赋值各变量,通过变量进行函数调用
f = lambda x: x * x
f() # lambda 通常用来编写跳转表。也就是行为的列表或字典,能够按照需要执行相应的动作
L = [lambda x: x ** ,
lambda x: x ** ,
lambda x: x ** ]
# 遍历函数列表
for f in L:
print(f()) # 指定特定函数执行
print(L[]()) # 同时lambda也可与字典嵌套可以构建更多种类的行为表。

在序列中映射函数:map

   程序对列表和其他序列常常要做的一件事就是对每个元素进行一个操作并把其结果集合起来。map函数会对一个序列对象中的每一个元素应用被传入的函数,并且返回一个包含了所有函数调用结果的一个列表。但是python3map是一个可迭代对象,他的返回值为一个迭代器,因此在这里,一个列表(list())调用用来迫使他生成所有的结果以显示。

"""map函数操作"""

L = [, , , ]

s = map((lambda x: x ** x), L)

# map函数可以通过next()进行调用,同时可以使用list()强制将其转化为列表。
print(next(s))
print(list(s))

函数式编程工具:filter和reduce

  在python内置函数中,map函数是用来进行函数式编程的这类工具中最简单的内置函数代表:函数式编程的意思是对序列应用一些函数的工具。例如,基于某一测试函数过滤出一些元素(filter),以及对每队元素都应用函数并运行到最后结果(reduce)。由于range和filter都返回可迭代对象,在python3中他们需要list调用来显示其所有结果。

"""filter函数操作"""

"""
filter函数用于过滤序列,和map一样接受一个函数和一个列表。
和map不同的是filter把传入的函数依次作用于每个元素,然后根据
返回值时True还是False决定保留还是丢弃。
""" # 在一个list中删掉偶数 def is_odd(n):
return n % ==
list(filter(is_odd, [, , , , , ])) """reduce函数操作""" """
reduce把一个函数作用在一个序列[x1, x2, x3, ...]上这个函数
必须接受两个参数,reduce把结果继续和序列的下一个元素做累积计算
"""
# 例如:reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2),x3),x4) from functools import reduce def add(x, y):
return x + y print(reduce(add, [, , , ]))

 

python学习——高阶函数的更多相关文章

  1. Python学习---高阶函数的学习

    高阶函数 高阶函数:函数名可以作为参数传递输入,函数名还可以作为返回值返回 函数名可以重新赋值,因为其本身就是一个变量    函数本身就是一个对象,    函数的变量名f本身就是指向函数本身的,加上括 ...

  2. Python 学习——高阶函数 filter 和 sorted

    filter filter函数顾名思义,筛选,通过调用函数进行筛选序列中的满足函数的子项 以实例来说话: 过滤一个序列中所有的偶数,保留奇数 另如下,过滤掉一个序列中的所有空格以及空字符等信息 可以知 ...

  3. python基础——高阶函数

    python基础——高阶函数 高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数a ...

  4. Haskell学习-高阶函数

    原文地址:Haskell学习-高阶函数 高阶函数(higher-order function)就是指可以操作函数的函数,即函数可以作为参数,也可以作为返回结果.有了这两个特性,haskell可以实现许 ...

  5. Python的高阶函数小结

    一. 高阶函数定义 简而言之,Python的高阶函数就是指一个函数作为参数传递给另外一个函数的用法. 举一个最简单的高阶函数来说明: >>> def add(x,y,f): retu ...

  6. python之高阶函数--map()和reduce()

    以下为学习笔记:来自廖雪峰的官方网站 1.高阶函数:简单来说是一个函数里面嵌入另一个函数 2.python内建的了map()和reduce()函数 map()函数接收两参数,一个是函数,一个是Iter ...

  7. python的高阶函数(map,filter,sorted,reduce)

    高阶函数 关注公众号"轻松学编程"了解更多. 1.MapReduce MapReduce主要应用于分布式中. 大数据实际上是在15年下半年开始火起来的. 分布式思想:将一个连续的字 ...

  8. Python笔记-高阶函数

    1.函数式编程 函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量. 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! 传入函数 既然 ...

  9. python之高阶函数和匿名函数

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

随机推荐

  1. python带有GIL解释器锁

    1.GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定. 2.每个CPU在同一时间只能执行一个线程(在 ...

  2. ubuntu 单机配置hadoop

    前言 因为是课程要求,所以在自己电脑上安装了hadoop,由于没有使用虚拟机,所以使用单机模拟hadoop的使用,可以上传文件,下载文件. 1.安装配置JDK Ubuntu18.04是自带Java1. ...

  3. UPC Contest RankList – 2019年第二阶段我要变强个人训练赛第十五场

    传送门 A: Colorful Subsequence •题意 给一个长为n的小写字母序列,从中选出字母组成子序列 问最多能组成多少种每个字母都不相同的子序列 (不同位置的相同字母也算是不同的一种) ...

  4. handlerAdapter与方法返回值的处理

    前提:处理器方法被调用并返回了结果 public void invokeAndHandle(ServletWebRequest webRequest, ModelAndViewContainer ma ...

  5. HDU 多校 第三场 Fansblog

    代码千万条,规范第一条 训练赛的时候打表找规律,发现答案是1/(st-pre-1)!,奈何用错了模板,一直TLE到比赛结束,一直以为是卡什么输入输出或者是两个素数相差太大导致复杂度过高,读入优化啥的都 ...

  6. Thinkphp 3.2.3 parseWhere设计缺陷导致update/delete注入 分析

    目录 分析 总结 分析 首先看一下控制器,功能是根据用户传来的id,修改对应用户的密码. 13行把用户传来的id参数送入where()作为SQL语句中的WHERE语句,将pwd参数送入save()作为 ...

  7. js数组排序 多条件

    按照[次数]和[时间]排序,选择次数最多的排在前面,同样次数的情况下时间较新排在前面. 原始数据: var arr= [ {name:'qqq', num:2,time:'2015-06-08 13: ...

  8. 从“n!末尾有多少个0”谈起

    在学习循环控制结构的时候,我们经常会看到这样一道例题或习题.问n!末尾有多少个0?POJ 1401就是这样的一道题. [例1]Factorial (POJ 1401). Description The ...

  9. 什么是https?http升级为https需要什么?

    一.什么是https? https是一种加密传输协议,网站使用https后可以避免敏感信息被第三方获取.https加密协议=SSL / TLS+http协议,也就是说,在传统的http协议上加上SSL ...

  10. 使用阿里云oss

    写这篇博文的原因是公司有个项目需要用到阿里云来存放用户头像文件.后期软件安装版本也可能需要存进去,然后折腾了两天终于摸熟了一点皮毛,在这里给大家简单介绍下. 一.初识对象存储oss 1.进入阿里云控制 ...