Python lambda

缘由

做的实验需要复写sklearn的CountVectorizer中的analyzer,于是去查看官方文档,在示例中发现:

>>> import re
>>> def to_british(tokens):
...     for t in tokens:
...         t = re.sub(r"(...)our$", r"\1or", t)
...         t = re.sub(r"([bt])re$", r"\1er", t)
...         t = re.sub(r"([iy])s(e$|ing|ation)", r"\1z\2", t)
...         t = re.sub(r"ogue$", "og", t)
...         yield t
...
>>> class CustomVectorizer(CountVectorizer):
...     def build_tokenizer(self):
...         tokenize = super(CustomVectorizer, self).build_tokenizer()
...         return lambda doc: list(to_british(tokenize(doc)))
...
>>> print(CustomVectorizer().build_analyzer()(u"color colour")) 
[...'color', ...'color']

通过代码中的输入输出样例大概可以明白lambda在此处实现的功能,但是本着求真的心态决定还是具体查一下lambda在python中的使用。

用处

lambda可以认为是匿名函数的定义,但为了代码更好的可读性一般不随意使用,主要用于减少单行函数的定义。非单行函数都不推荐使用lambda进行声明。

示例

g = lambda x:x+1
# 等价于
g(x)=x+1

值得注意的是,for…in…结构体能够解决的事情一般不使用lambda来解决,这样有时候会导致代码可读性下降。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值