9.匿名函数:lambda表达式/filter()/map()

本文介绍Python中lambda函数的优点及使用方法,并通过示例展示了如何利用filter和map这两个内置函数来处理数据序列,使代码更简洁高效。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

匿名函数的好处:

1.简化代码的可读性:由于普通的屌丝函数阅读时经常要
跳到开头def定义部分,使用lanbda函数可以省去这样的步骤
2.省去取名字的问题:对于一些比较抽象并且在整个程序中只调用
一两次的函数,我们可以直接使用匿名函数
3.python写一些执行脚本时,使用lambda就可以省下定义函数过程,比如
说我们只是需要写个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数
然后再写调用,使用lambda就可以使得代码更加简洁。

语法:

格式:
lambda 形参 : 函数体
返回值:
    返回一个函数的对象
例:
>>> lambda x : x*x
<function <lambda> at 0x00000000026FFF98>

一般情况下,我们这样使用:先用变量g接受匿名函数
返回的函数对象;然后用变量g去调用函数
>>> g = lambda x : x*x
>>> g(2)
4

两个牛逼的BIF

1. filter:过滤器

>>> help(filter)
Help on built-in function filter in module __builtin__:

filter(...)
   filter(function or None , sequence) -> list, tuple, or string
   #filter(   函数  or 无函数,   序列  )
   Return those items of sequence for which function(item) is true.
    #返回使函数为true的序列元素 
    If function is None, return the items that are true.  
    #如果没有函数,返回序列元素为true的元素



【例1】
>>> filter(None,[1,2,0,[False],False,True]) #无函数None
[1, 2, [False], True]

>>> filter(None,(False,0))
()

【例2】有函数:返回0-100内的奇数
>>> filter(odd,range(0,100))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]

>>> filter(lambda x : x%2 , range(100))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 85, 87, 89, 91, 93, 95, 97, 99]

2. map :映射

>>> map(lambda x:x%2,range(10))
[0, 1, 0, 1, 0, 1, 0, 1, 0, 1]

>>> map(lambda x:x*2,range(10))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

>>> map(lambda x : x-1 , range(10))
[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]
解释:把range(10)形成的列表list中的每一个元素依次取出来,
再调用function,最后返回生成序列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值