lambda匿名函数

  1.lambda只是一个表达式,函数体比def简单多。

  2.lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去

  3.lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数

  4.lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的返回值。

  5.lambda语句构建的其实是一个函数对象。

语法:

lambda函数的语法只包含一个语句

lambda [arg1 [,arg2,……argn]]:expression

"""
匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果。
用匿名函数有个好处,因为函数没有名字,不必担心函数名冲突。此外,匿名函数也是一个函数对象,
也可以把匿名函数赋值给一个变量,再利用变量来调用该函数:
"""
应用:max,min,sorted,map,reduce,filter

  

例子: 

def foo(x):
return x*x
print(foo(3)) f=lambda x:x*x
print(f(3)) # 包含多个参数
def foo(x,y):
return x+y
print(foo(2,4)) f=lambda x,y:x+y
print(f(2,4))

lambda函数和普通的函数相比,就是省去了函数名称,同时这样的匿名函数,不能共享在别的地方调用,也有很多别的方法能够替代lambda。

优点:
1 省去定义函数的过程,快速定义单行的最小函数,让代码更加精简
2 不需要复用函数,无序定义函数名称

filter函数:过滤

filter函数会对指定序列过滤操作

filter(function or None,sequence)
filter函数会对序列参数sequence中的每个元素调用function函数,最后返回的结果包含调用结果为True的元素
注意:python3.x返回的是一个filter object(函数map也是),要加上list()等类型转换。

  

def foo(i):
if i%2==0:
return True
else:
return False
l=[1,2,3,4,5,6,7,8]
# l=filter(foo,l) # <filter object at 0x000001989DD296D8> 返回的是对象
l=list(filter(foo,l)) # 类型转换
print(l) # [2, 4, 6, 8] # 和lambda结合使用
names=['tom_a','bob_a','amy_a','buer']
print(list(filter(lambda name:name.endswith('_a'),names)))

map函数:映射

map函数会对指定序列做映射操作

map(function or None,sequence)

map函数会对序列参数sequence中的每个元素调用function函数,返回结果为每一个元素调用function函数的返回值

def foo(i):
return i**2
l=[1,2,3,4]
# l=map(foo,l) # <map object at 0x0000021850F09780> 返回的是对象
l=list(map(foo,l))
print(l) # 结合lambda使用
l=list(map(lambda x:x**2,l))
print(l)

reduce函数:合并

注意:reduce函数在3.x版本不是内置函数了,reduce()函数已经被从全局名称空间里移除了,它现在倍放置在functools模块里,用的话要先引入

from functools import reduce

reduce函数会对指定序列做迭代操作,reduce(function or None,sequence)

reduce函数中的function参数是一个有两个参数的函数,reduce依次从sequence中取一个元素,和上一次调用function的结果做参数再次调用function。

from functools import reduce
def foo(x,y):
return x+y
l=[1,2,3,4,5]
l=reduce(foo,l)
print(l) # 结合lambda使用
l=[1,2,3,4,5]
l=reduce(lambda x,y:x+y,l)
print(l)

python内置函数lambda、filter、map、reduce的更多相关文章

  1. Python内置函数之filter map reduce

    Python内置函数之filter map reduce 2013-06-04 Posted by yeho Python内置了一些非常有趣.有用的函数,如:filter.map.reduce,都是对 ...

  2. Python学习(五)函数 —— 内置函数 lambda filter map reduce

    Python 内置函数 lambda.filter.map.reduce Python 内置了一些比较特殊且实用的函数,使用这些能使你的代码简洁而易读. 下面对 Python 的 lambda.fil ...

  3. python之有用的3个内置函数(filter/map/reduce)

    这三个内置函数还是非常有用的,在工作中用的还不少,顺手,下面一一进行介绍 1.filter 语法:filter(function,iterable) 解释:把迭代器通过function函数进行过滤出想 ...

  4. python内置函数,lambda表达式,文件读写

    Lambda表达式: lambda是个匿名函数,自动加return返回 a={ 6:2,8:0, 1:4,-5:6,99:11,4:22} print(sorted(a.items()))#按key排 ...

  5. Python之匿名函数(filter,map,reduce)

    参考博客:Python匿名函数详解--http://blog.csdn.net/csdnstudent/article/details/40112803 Python内建函数之——filter,map ...

  6. Python高级特性: 函数编程 lambda, filter,map,reduce

    一.概述 Python是一门多范式的编程语言,它同时支持过程式.面向对象和函数式的编程范式.因此,在Python中提供了很多符合 函数式编程 风格的特性和工具. 以下是对 Python中的函数式编程 ...

  7. 内置函数--sorted,filter,map

    sorted() 排序函数. 语法: sorted(Iterable, key=None, reverse=False) Iterable: 可迭代对象;  key: 排序规则(排序函数); reve ...

  8. Python 函数lambda(), filter(), map(), reduce()

    1 filter filter(function, sequence):对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String ...

  9. Python内置函数(34)——filter

    英文文档: filter(function, iterable) Construct an iterator from those elements of iterable for which fun ...

随机推荐

  1. 第十八次ScrumMeeting会议

    第十八次Scrum Meeting 时间:2017/12/8 地点:线上+SPR咖啡馆 人员:蔡帜 王子铭 游心 解小锐 王辰昱 李金奇 杨森 陈鑫 赵晓宇 照片: 目前工作进展 名字 今日 明天的工 ...

  2. C++ Mooc学习

    # C++远征篇之起航 1.IDE搭建,现在大部分同学都使用devC,devC的debug调试功能特别好用,可以跟踪变量.省去了在中间插入一些输出语句来输出中间变量的麻烦. 2.using names ...

  3. 理解windows模型

    同步 所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回.按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等).但是一般而言,我们在说同步.异步的时候,特指 ...

  4. phpcmsv9 同时调用多个栏目的文章标签

    V9版本默认好像没有多栏目调用的标签,例如我用{pc:content action="lists" catid ="6,7,8,9,10" num=" ...

  5. 我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令

    一.如果数据重要,请先备份数据 二.删除表中数据 SQL: Delete From ('表名')  如:Delete From abcd 三.执行新语句 SQL: dbcc checkident('表 ...

  6. 初入py

    1.下载工具sublime 我的网盘下载地址:https://pan.baidu.com/s/18-U1ZSg_zHoSAqUuvXj_PQ 直接解压即可 2.配置py27 在新建的文件里面编辑并保存 ...

  7. ViewData与ViewBag

    ViewData与ViewBag使用的是同一个数据源,因此数据一样,只是ViewBag 不再是字典的键值对结构,而是 dynamic 动态类型(http://www.cnblogs.com/kissd ...

  8. 【bzoj5107】[CodePlus2017]找爸爸 dp

    题目描述 给出两个基因串,你需要在其中插入任意个空格,使得两个串长度相同.如果两个串的某同一位置都是字母则获得某给定收益,对于每个串的每个长度为k的连续空格段要付出a(k-1)+b的损失.求最大净收益 ...

  9. 【bzoj1572】[Usaco2009 Open]工作安排Job 贪心+堆

    题目描述 Farmer John 有太多的工作要做啊!!!!!!!!为了让农场高效运转,他必须靠他的工作赚钱,每项工作花一个单位时间. 他的工作日从0时刻开始,有1000000000个单位时间(!). ...

  10. XML-RPC协议学习

    XML-RPC调用包括2部分:客户端client(调用线程).服务器端server(被调用的线程).服务端是通过特定的URL获得的,调用过程如下: 1.客户端程序使用XML-RPC客户端发出作业请求, ...