递归函数

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

"""尾递归"""
# 尾递归是指在函数返回的时候,调用自身本身,并且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. [leetcode] 7. Reverse Integer (easy)

    原题 水题 唯一注意的点就是数字溢出 class Solution { public: int reverse(int x) { long long MAX = ((long long)1 <& ...

  2. 如何在 Centos7 中使用阿里云的yum源

    如何在 Centos7 中使用阿里云的yum源 1. 备份原来的yum源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Ba ...

  3. docker原理介绍

    内部分享的ppt,做的有些粗糙... 个人使用的总结,如有错误,多多指正!

  4. java并发笔记之java线程模型

    警告⚠️:本文耗时很长,先做好心理准备 java当中的线程和操作系统的线程是什么关系? 猜想: java thread —-对应-—> OS thread Linux关于操作系统的线程控制源码: ...

  5. c++容器简单总结(续)

    操作 效果 vector<T> c 产生空的vector vector<T> c1(c2) 产生同类型的c1,并将复制c2的所有元素 vector<T> c(n) ...

  6. C#托盘程序设置

    打开Microsoft Visual Studio 2010,新建解决方案--添加项目--托盘的实现     从工具栏里,把NotifyIcon控件拖到窗体上,并设置属性: 1.visible 设置默 ...

  7. 敏捷和DevOps:是敌是友?

    DevOps是敏捷在软件开发团队的另一应用.那么相比之下,哪个更胜一筹? 一边,有业界认可的scrum master,它的朋友极限编程者,以及由其衍生的 LeSS.SAFe.DAD等,是敏捷. 另一边 ...

  8. T-SQL 镜像测试

    --====================================================== ----镜像计划建立 2016-05-10 17:05:16.463 hubiyun ...

  9. JS面向对象编程(一):封装

    js是一门基于面向对象编程的语言.      如果我们要把(属性)和(方法)封装成一个对象,甚至要从原型对象生成一个实例,我们应该怎么做呢?  一.生成对象的原始模式            假定把猫看 ...

  10. java流压缩图片

    整理文档,搜刮出一个Java做图片压缩的代码,稍微整理精简一下做下分享.首先,要压缩的图片格式不能说动态图片,你可以使用bmp.png.gif等,至于压缩质量,可以通过BufferedImage来指定 ...