lambd 表达式 filter map apply

lambda表达式:

lambda是一个表达式,而不是一个语句,此时Lambda可以出现在Python语法不允许def出现的地方(例如一个列表常量或者函数调用中);作为表达式lambda返回一个值(新的函数)可以选择性得赋值给一个变量,相反def语句总是得在头部将一个新的函数赋值给一个变量而不是将这个函数作为结果返回


lambda的主题是一个单一的表达式,而不是一个代码块,lambda通常要比def功能单一,仅能够在lambda表示中封装有限的逻辑

连If这样的语句都不能使用-

lambda用于处理简单的任务而def用来编写处理更大任务的函数


>>> x=(lambda x,y:if x>y:)
SyntaxError: invalid syntax
>>> x=(lambda x,y:if x>y:)
SyntaxError: invalid syntax
>>> x=(lambda x,y:)
SyntaxError: invalid syntax

>>> f=lambda x,y,z:x+y*z
>>> f(1,2,3)
7
>>> 


//lambda通常用来编写跳转表,也就是行为的列表或者字典,能够按照需要执行相应的动作

>>> L=[(lambda x:x**2),(lambda x:x**3),(lambda x:x**4)]
>>> for f in L:
print f(2)
4
8
16
>>> print L[0](3)
9

>>> key='got'
>>> print {'already': (lambda :2+2),
 'got':(lambda :2*4),
 'one': (lambda :2**4)
 }[key]()
8

///apply的使用

apply 函数简单地调用了在第一个参数位置上传入的函数,并且将传入的元组作为函数预期的参数,因为参数列表可以作为一个元组传入,一个程序可以在运行时构建这个参数列表

>>> args=(2,3)
>>> def func(a,b,c):
print a+b+c

>>> apply(func,args)                 //参数需要匹配
Traceback (most recent call last):
  File "<pyshell#159>", line 1, in <module>
    apply(func,args)
TypeError: func() takes exactly 3 arguments (2 given)


>>> args=args+(4) //列表构造需要加个逗号
Traceback (most recent call last):
  File "<pyshell#160>", line 1, in <module>
    args=args+(4)
TypeError: can only concatenate tuple (not "int") to tuple
>>> args=args+(4,)
>>> apply(func,args)
9
///在序列中映射函数:map

此函数对列表和其他的序列中的每一个元素进行一个操作并且把结果集合起来

>>> counter=(1,23,4,4)
>>> map((lambda x:x*2),counter)
[2, 46, 8, 8]
>>> 

函数filter :基于某一测试函数过滤一些元素以及对每对元素都应用函数并且运行到最后结果

>>> range(-5,5)
[-5, -4, -3, -2, -1, 0, 1, 2, 3, 4]
>>> filter((lambda x:x>0),range(-5,5))
[1, 2, 3, 4]
>>> 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值