Python之lambda、map、filter

lambda

lambda关键字在Python表达式内创建匿名函数。但在lambda函数的定义体中不能复制,也不能使用while、try等语句,只能使用纯表达式。

  • lambda只是一个表达式,函数体比def简单很多
  • lambda的主体是一个表达式,而不是一个代码块,只能在lambda表达式中封装有限的逻辑进去
  • lambda函数拥有自己的名字空间,且不能访问自有参数列表之外或者全局名字空间里的参数
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存,从而提升运行效率

lambda函数的一般语法非常简单,形式为:lambda argument_list:expression
参数由逗号分隔的参数列表组成,表达式是使用这些参数的算术表达式。可以将该函数分配给一个变量以赋予其名称。

例:
a = lambda x,y:x+y
print(a(3,4))
输出:
7

**

map

**
map是Python的高级函数,形式为:map(func,*iterables):第一个参数func是函数的名称,第二个参数为一个序列(例如一个列表),map将函数func应用于序列的所有元素。在Python3中,map返回一个迭代器。

例:
seq_list=[1,2,3 ,4]
F = list(map(lambda x:x**2,seq_list))
print(F)
输出
[1,4,9,16]

map可以应用于多个列表,列表不必具有相同的长度。map会将lambda函数应用于参数列表的元素,即它首先应用于具有第0个索引的元素,然后应用于具有第一个元素的索引,直到达到第n个索引。

例:
a = [1,2,3,4]
b = [5,6,7,8]
c = [5,6,7]
ab = list(map(lambda x,y:x+y,a,b))
ac = list(map(lambda x,y:x+y,a,c))
print(ab)
print(ac)
输出:
[6,8,10,12]
[6,8,10]

**

filter

**
filter也是Python的高级语言,为函数式编程提供便利。其作用是对序列中的元素进行筛选,最终获得符合条件的序列,其一般形式为:filter(function,iterable),函数提供了一个优雅的方式来过滤掉序列中的所有元素。

例:先滤出前11个斐波那契数列的奇数和偶数元素
fibonacci = [0,1,1,2,3,5,8,13,21,34,55]
even_number = list(filter(lambda x:x%2 ==0,fibonacci))
print(even_number)
输出:
[0,2,8,34]

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值