[ python ] 匿名函数和高阶函数
匿名函数
描述:
关键字 lambda 定义的函数
语法:
函数名 = lambda 参数:返回值
返回值:
函数返回结果值
实例:
一个参数的匿名函数:
func = lambda x: x*x f = func(2)
print(f) # 执行结果:
# 4
多个参数的匿名函数:
func = lambda x, y: x+y f = func(1, 2)
print(f) # 执行结果:
# 3
高阶函数
(1)map
描述:
map()会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数的返回值的新列表
语法:
map(function, iterable, ...)
参数:
function -- 函数
iterable -- 一个或多个序列
返回值:
python 2.X 返回列表
python 3.X 返回迭代器
实例:

提供两个列表,对相同位置的列表数据进行相加

(2)reduce
描述:
对参数序列中的元素进行累积,效果如下:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
语法:
reduce(function, iterable[, initializer])
参数:
function -- 函数,有两个参数
iterable -- 可迭代对象
initializer -- 可选,初始参数
返回值:
返回函数计算结果
实例:

结合匿名函数+高阶函数的使用:
from functools import reduce r = reduce(lambda x, y: x + y, [1,2,3,4,5])
print(r) # 执行结果:
# 15
(3)filter
描述:
python内建的 filter() 函数用于过滤序列
语法:
filter()接收一个函数和一个序列,filter()把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素
实例:
去掉list中的偶数,只保留奇数
l = [1,2,3,4,5,6,7, 8, 9]
def is_odd(n):
return n % 2 == 1 f = filter(is_odd, l)
print(list(f)) # 执行结果:
# [1, 3, 5, 7, 9]
练习:
回数是指从左到右读和从右到左读都是一样的数,例如:12321,909 请利用 filter() 筛选出回数
def is_palindrome(n):
hx = str(n) # 首先将参数转换为str类型
if hx == hx[::-1]: # 如果从左到右,从右到左都相等,则返回回数
return hx
(4)sorted
描述:
sorted() 函数对所有可迭代的对象进行排序操作。
sort 和 sorted 区别:
sort 是应用在 list 上的方法,sorted可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回是对已经存在的列表进行操作,无返回值,而内建函数sorted 方法返回的是一个新的list,而不是在原来的基础上进行的操作
语法:
sorted(iterable[, cmp[, key[, reverse]]])
key: 主要用来进行比较的元素,只有一个参数,具体的函数的参数就是取自与可迭代对象中,指定可迭代对象中的一个元素来进行排序。
reverse:默认排序规则是升序排序, reverse=True 则降序排序
返回值:
返回重新排序的列表
实例:
比较数字
In [1]: sorted([36, 5, -12, 9, -21])
Out[1]: [-21, -12, 5, 9, 36]
定义key函数,使用绝对值进行排序
In [2]: sorted([36, 5, -12, 9, -21], key=abs)
Out[2]: [5, 9, -12, -21, 36]
定义key函数,使用绝对值进行降序排序
In [3]: sorted([36, 5, -12, 9, -21], key=abs, reverse=True)
Out[3]: [36, -21, -12, 9, 5]
(5)zip
描述:
zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
语法:
zip([iterable, ...])
iterable: 一个或多个迭代器
返回值:
返回元组列表
实例:
In [10]: a = [1,2,3] In [11]: b = [4,5,6] In [12]: list(zip(a, b ))
Out[12]: [(1, 4), (2, 5), (3, 6)] #以最短的列表作为组合的结尾 In [13]: a = [1,2,3,4,5] In [14]: b = [1,2] In [15]: list(zip(a, b ))
Out[15]: [(1, 1), (2, 2)]
[ python ] 匿名函数和高阶函数的更多相关文章
- Python小世界:匿名函数、高阶函数、推导式
前言 木子本人搞起Python已有多年,一直觉得什么都会,但是有时候实操起来,才觉得很多底层基础的知识都没有彻底的灵活掌握. 另外,网上关于Python基础知识的各种普及已有太多太多. 附上相关大神的 ...
- python基础编程: 编码补充、文件操作、集合、函数参数、函数递归、二分查找、匿名函数与高阶函数
目录: 编码的补充 文件操作 集合 函数的参数 函数的递归 匿名函数与高阶函数 二分查找示例 一.编码的补充: 在python程序中,首行一般为:#-*- coding:utf-8 -*-,就是告诉p ...
- Python之路-函数基础&局部变量与全局变量&匿名函数&递归函数&高阶函数
一.函数的定义与调用 函数:组织好的.可重复使用的.用户实现单一或者关联功能的代码段.函数能够提高应用的模块性和代码的重复利用率.Python提供了很多内置的函数,比如len等等,另外也可以根据自己的 ...
- python开发基础04-函数、递归、匿名函数、高阶函数、装饰器
匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...
- Python学习 Day 5 高阶函数 map/reduce filter sorter 返回函数 匿名函数 装饰器 偏函数
高阶函数Higher-orderfunction 变量可以指向函数 >>> abs #abs(-10)是函数调用,而abs是函数本身 <built-in function ab ...
- Python技法3:匿名函数、回调函数和高阶函数
1.定义匿名或内联函数 如果我们想提供一个短小的回调函数供sort()这样的函数用,但不想用def这样的语句编写一个单行的函数,我们可以借助lambda表达式来编写"内联"式的函数 ...
- 【python】python函数式编程、高阶函数
1.map() : python内置的高阶函数,接收一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并 返回. def f(x): r ...
- python入门16 递归函数 高阶函数
递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ ...
- python 函数式编程:高阶函数,map/reduce
python 函数式编程:高阶函数,map/reduce #函数式编程 #函数式编程一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数 #(一)高阶函数 f=abs f print ...
- python函数式编程之高阶函数学习
基本概念 函数式编程,是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量.因此,任意一个函数,只要输入确定,输出就确定的这种函数我们称之为纯函数,我们称这种函数没有副作用.而允许使用 ...
随机推荐
- 计算机网络:A、B、C、D和E类IP地址
IP地址分为A,B,C,D,E五类. 网络号:用于识别主机所在的网络:主机号:用于识别该网络中的主机. 其中A类分配给政府机关使用,B类地址给大中型企业使用,C类地址给个人使用.这三种是主要的. IP ...
- KMPnext数组自看
emm...无数次再看kmp了 因为一直没做相关的题..看了就忘看了就忘..emm.. next[i]表示去掉第i个元素后,自已的前缀和后缀完全匹配的最大长度 例 字符串 a b a b a b z ...
- thusc2018酱油记
day-1 打点行囊,从学校出发去火车站 day0 在火车上一觉醒来便快到了北京,直接前往了宾馆安置 下午报道,一脸向往地第一次走入清华园,感觉十分的梦幻,心里一直喃喃:"希望以后也能经常在 ...
- Linux下C高手成长过程----经典书籍推荐
http://www.cnblogs.com/shanzhizi/archive/2012/07/10/2585357.html
- [转]从头开始 GAN
1 前言 GAN的火爆想必大家都很清楚了,各种GAN像雨后春笋一样冒出来,大家也都可以名正言顺的说脏话了[微笑脸].虽然目前GAN的酷炫应用还集中在图像生成上,但是GAN也已经拓展到NLP,Robot ...
- 题解【bzoj2301 [HAOI2011]Problem b】
Description 求有多少个数对 \((x,y)\) ,满足$ a \leq x \leq b$ ,\(c \leq y \leq d\) ,且 \(\gcd(x,y) = k\),\(\gcd ...
- qq快速登陆
http://www.cnblogs.com/1996V/p/7481823.html qq快速登陆
- javaFX8初探(环境搭建)
1:下载java8 Oracle官网2:下载eclipse4.4 eclipse官网3:安装e(fx)clipse插件 http://download.eclipse.org/efxclipse/u ...
- 前端PHP入门-034-Session技术-掌握级别
而Session是通过将数据保存在服务器端来实现保持连接的.我们通过一个例子来了解session的机制. 我们去饮料店买饮料,下单以后服务员会给我们一个号码牌,然后你走到一旁,服务员并不认识你是谁,如 ...
- libuv在mingw下编译
libuv是一个基于事件的异步IO库,来自node.js项目. libuv提供了Makefile.mingw,供MingW编译,由其中的规则我们可以得到一下编译步骤: cd libuv/src gcc ...