python学习——高阶函数
递归函数
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。使用递归函数的优点是逻辑简单清晰,缺点就是过深的调用会导致栈溢出。但是针对尾递归优化的语言可以通过尾递归防止栈溢出。尾递归事实上和循环是等价的,没有循环语句的编程语言只能通过尾递归实现循环。
"""尾递归"""
# 尾递归是指在函数返回的时候,调用自身本身,并且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学习——高阶函数的更多相关文章
- Python学习---高阶函数的学习
高阶函数 高阶函数:函数名可以作为参数传递输入,函数名还可以作为返回值返回 函数名可以重新赋值,因为其本身就是一个变量 函数本身就是一个对象, 函数的变量名f本身就是指向函数本身的,加上括 ...
- Python 学习——高阶函数 filter 和 sorted
filter filter函数顾名思义,筛选,通过调用函数进行筛选序列中的满足函数的子项 以实例来说话: 过滤一个序列中所有的偶数,保留奇数 另如下,过滤掉一个序列中的所有空格以及空字符等信息 可以知 ...
- python基础——高阶函数
python基础——高阶函数 高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数a ...
- Haskell学习-高阶函数
原文地址:Haskell学习-高阶函数 高阶函数(higher-order function)就是指可以操作函数的函数,即函数可以作为参数,也可以作为返回结果.有了这两个特性,haskell可以实现许 ...
- Python的高阶函数小结
一. 高阶函数定义 简而言之,Python的高阶函数就是指一个函数作为参数传递给另外一个函数的用法. 举一个最简单的高阶函数来说明: >>> def add(x,y,f): retu ...
- python之高阶函数--map()和reduce()
以下为学习笔记:来自廖雪峰的官方网站 1.高阶函数:简单来说是一个函数里面嵌入另一个函数 2.python内建的了map()和reduce()函数 map()函数接收两参数,一个是函数,一个是Iter ...
- python的高阶函数(map,filter,sorted,reduce)
高阶函数 关注公众号"轻松学编程"了解更多. 1.MapReduce MapReduce主要应用于分布式中. 大数据实际上是在15年下半年开始火起来的. 分布式思想:将一个连续的字 ...
- Python笔记-高阶函数
1.函数式编程 函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量. 函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数! 传入函数 既然 ...
- python之高阶函数和匿名函数
map() map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. def func(x): return ...
随机推荐
- LiteDB源码解析系列(2)数据库页详解
在这一篇里,我将用图文的方式展示LiteDB中页的结构及作用,内容都是原创,在描述的过程中有不准确的地方烦请指出. 1.LiteDB页的技术工作原理 LiteDB虽然是单个文件类型的数据库,但是数据库 ...
- centos7下yum方式安装MySQL5.7
前言: MySQL作为一款免费.开源数据库产品,已经问世就饱受关注,很多中小企业甚至是大企业都钟爱MySQL,随着大数据的不断发展,我们接触的信息量也越来越多,虽然NoSQL是大数据的宠儿,但MySQ ...
- python基础——字典(dict)
字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 . dict1 = {} ...
- 【Android】INSTALL_FAILED_UPDATE_INCOMPATIBLE
多是因为已经安装过该 apk 文件了,一般卸载了重新运行就 OK 了.
- springboot-权限控制shiro(二)
目录 1. 场景描述 2. 解决方案 1. 场景描述 (1)最近有点小忙,公司真实项目内容有点小多以及不想只介绍理论,就使用springboot单独部署了个shiro的demo项目,还是理论和实际项结 ...
- NLP(十三)中文分词工具的使用尝试
本文将对三种中文分词工具进行使用尝试,这三种工具分别为哈工大的LTP,结巴分词以及北大的pkuseg. 首先我们先准备好环境,即需要安装三个模块:pyltp, jieba, pkuseg以及L ...
- .c和.h文件的区别
.h文件(头文件): 一般写一些函数声明.宏定义.结构体等内容. 其实就是将各个.c文件中重复的声明.宏定义.结构体,枚举变量等提取出来,放进一个新的文件中,便于其他.c文件共享这部分的代码,同时也方 ...
- 爬虫获取搜狐汽车的配置信息 和swf动态图表的销量数据-------详细教学
前情提要:需要爬取搜狐汽车的所有配置信息,具体配置对应的参数. 以及在动态图表上的历史销量. 比如: 一汽奥迪旗下Q5L 的<40 TFSI 荣享进取型 国VI >的历史销量和该配置的参数 ...
- 【React踩坑记二】react项目实现JS路由跳转
这里使用的是4.31版本的react-router-dom "react-router-dom": "^4.3.1", 直接使用以下代码即可实现路由跳转 thi ...
- Python 环境管理
Python 版本管理器:pyenv zsh 配置 # 安装 curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv ...