Python - lambda 表达式(下)

简介: Python - lambda 表达式(下)

匿名函数 lambda


为什么有 lambda 匿名函数

  • 在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便
  • Python 提供了 lambda 表达式对匿名函数提供支持

 

lambda 表达式的语法

lambda args: expression

expression 只允许是一条表达式,所以使用很受限  

 

lambda 表达式小栗子

lambda x:x>2

等价函数写法

def select_positive(x):

   return x > 0

 

使用 lambda 表达式重写上面的将函数作为参数传递

def test(list, select_fun):
    for item in list:
        if select_fun(item):
            print(item)
list = [1, -1, 2, -2, 3, -3]
test(list, lambda x: x > 0)
test(list, lambda x: x < 0)
# 输出结果
1
2
3
-1
-2
-3


map 函数


使用 Python 内置的 map 函数时,通常会用到 lambda 表达式

 

函数语法

map(function, list)

  • map 函数接收两个参数 function 和 list
  • function 是一个函数,list 是一个可以被遍历的序列
  • map 将传入的函数依次作用到序列的每个元素,并把结果作为新的序列返回

 

map 函数原理

image.png

  • 图的左边是一个序列 list,包含 3 个元素 1、2、3
  • 调用函数 map 时,需要提供一个函数 y = f (x),函数 f 将输入 x 映射为输出 y
  • 将函数 f 对图的左边的序列中的每个元素依次作用,得到图的右边的序列
  • 图的右边是一个序列 list,包含 3 个元素 f (1)、f (2)、f (3)

 

非 lambda 的写法

list = [1, 2, 3]
def test(x):
    x += 5
    return x
list1 = map(test, list)
for i in list1:
    print(i)
# 输出结果
6
7
8


lambda 的写法

list = [1, 2, 3]
list1 = map(lambda x: x + 5, list)
for i in list1:
    print(i)
# 输出结果
6
7
8


lambda 表达式栗子一:将 lambda 赋值给变量


  • 将 lambda 表达式赋值给一个变量
  • 这样调用这个变量,相当于调用了一个函数


f = lambda a, b: a if a > b else b
print(f(1, 2))
# 输出结果
2
# lambda 表达式等价写法
def test(a, b):
    if a > b:
        return a
    else:
        return b


lambda 表达式栗子二:将 lambda 作为函数参数传递


f = lambda x: x if x > 0 else 0
def test(f, x):
    if f(x):
        print("正数")
    else:
        print("负数")
test(f, 1)
test(f, -1)
# 输出结果
正数
负数
# lambda 表达式等价写法
def func(x):
    if x > 0:
        return x
    else:
        return 0


lambda 表达式栗子三:将 lambda 作为函数返回值


f = lambda a, b, c: a * b * c
def test(a, b, c):
    a += 1
    b += 2
    c += 3
    return f(a, b, c)
print(test(1, 2, 3))
# 输出结果
48
# 等价写法
def test(a, b, c):
    return a * b * c


Python 内置函数接受函数作为参数


  • filter(function, iterable):用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表
  • sorted(iterable, cmp=None, key=None, reverse=False):对所有可迭代的对象进行排序操作
  • map(function, iterable, ...):根据提供的函数对指定序列做映射
  • reduce(function, iterable[, initializer]):会对参数序列中元素进行累积

后面再详说这些函数

 

总结


lambda 表达式常用场景:当某些功能代码只用一次的时候,可以用 lambda 代替

相关文章
|
2月前
|
缓存 前端开发 JavaScript
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
在我们快速发展的在线环境中,只需几秒钟加载的网站就能真正脱颖而出。您是否知道加载时间较快的网站的转化率比加载时间较长的网站高出三倍?
27 0
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
|
2月前
|
存储 JSON 网络安全
使用 EFS 在 AWS Lambda 上安装 Python 依赖项
使用 aws lambda 时,开发人员面临的常见挑战之一是管理大型 python 依赖项。
35 1
|
2月前
|
Python
Python编程中正则表达式的使用
【10月更文挑战第22天】正则表达式,一种强大的文本处理工具,在Python编程中有着广泛的应用。本文将介绍如何使用Python中的re库来使用正则表达式,包括如何创建、匹配、查找和替换字符串等。通过学习本文,你将能够掌握Python中正则表达式的基本使用方法。
|
2月前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
43 2
|
4月前
|
Python
Python中正则表达式(re模块)用法详解
Python中正则表达式(re模块)用法详解
72 2
|
3月前
|
程序员 Python
Python中Lambda表达式的优缺点及使用场景
Python中Lambda表达式的优缺点及使用场景
63 0
|
3月前
|
存储 算法 API
Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内置函数总结、案例
这篇文章是关于Python函数、参数、变量、lambda表达式、内置函数的详细总结,包含了基础知识点和相关作业练习。
46 0
|
4月前
|
Python
Python中几种lambda排序方法
【9月更文挑战第7天】在Python中,`lambda`表达式常用于配合排序函数,实现灵活的数据排序。对于基本列表,可以直接使用`sorted()`进行升序或降序排序;处理复杂对象如字典列表时,通过`lambda`指定键值进行排序;同样地,`lambda`也适用于根据元组的不同位置元素来进行排序。
193 1
深入浅出python的lambda表达式
今天我们来聊聊Python中一个常用的特性 - lambda表达式。别被这个听起来很高大上的名字吓到,其实它就是个匿名函数的实现机制。
|
5月前
|
Python
Python 中的 Lambda 函数是什么?
【8月更文挑战第29天】
59 0