Python数据分析学习笔记:01:lambda函数

匿名函数lambda

  • Python支持一种被称为匿名或lambda的函数,它仅由单条语句组成,该语句的结果就是返回值。
  • 它通过lambda关键字进行定义,这个关键字没有别的含义,仅仅是说我们现在有一个函数
# 求x*2的函数常规写法
def short_function(x):
    return x * 2
# 等同于声明这样一个函数
equiv_anon = lambda x: x * 2
  • 例如:假设有一组字符串,你想要根据各字符串不同字母的数量对其进行排序
strings = ['foo', 'card', 'bar', 'aaaa', 'abab']
strings.sort(key = lambda x: len(set(list(x))))
strings
['aaaa', 'foo', 'abab', 'bar', 'card']
  • 上面的代码中strings.sort(key = lambda x: len(set(list(x))))这一句,首先是对排序的依据进行了设定,声明了一个匿名函数,先把元素转换为list类型,然后转换为set,去除掉重复元素,然后用len函数计数字符串中出现的不同字母的数量, 依据这个lambda函数的返回值对strings的各个元素排序。

柯里化:部分参数应用

  • 柯里化(currying)是指通过“部分参数应用”从现有函数派生出新函数的技术
  • 例如:假设我们有一个执行两数相加的简单函数:
def add_numbers(x, y):
    return x + y
  • 通过这个函数,我们可以派生出一个新的只有一个参数的函数——add_five,它用于对其参数加5
add_five = lambda y: add_numbers(5, y)
  • add_numbers的第二个参数称为“柯里化的”(curried)。其实就是定义了一个可以调用现有函数的新函数而已。
  • 内置的functools模块可以用partial函数将这个过程简化:
from functools import partial
add_five = partial(add_numbers, 5)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值