1 lambda 函数介绍
在Python中,除了可以使用 def func 这种传统的表达式来定义一个新函数外,还可以使用lambda来定义一个带返回值的简单函数(返回值可以是任意对象,包括元组、列表和集合),即每个lambda函数都会向其调用环境返回一个对象值。
lambda函数允许你使用关键字 lambda 来创建一个单行的新函数。当你想简单创建一个只用一次的函数,且希望该函数在之后立即被垃圾回收掉时,lambda 函数就很有用了。
lambda 函数的具体语法如下:
lambda 参数: 表达式
# 在调用 lambda 函数时,必须提供相应的参数
# 表达式的结果即为 lambda 函数的返回值
# 例子
lambda x, y: x + y
# x 和 y 为需要提供的参数列表
# x + y 为表达式,其计算结果即为 lambda 的返回值
sum_num = lambda x, y: x + y
print(sum_num(4, 6)) # 10
2 map 函数介绍
mao(f, s) 函数的参数时一个函数对象 f 和一个元素序列 s,调用 map() 函数时,会把传入的 f 函数应用在序列 s 的每个元素上。
使用 map() 函数时,你可以定义一个完整的命名函数——使用 def 表达式——作为传入的函数 f,但这样往往比较麻烦,其欸降低了可读性——尤其是函数很短,而你又只需要用到它一次的时候,这时最好使用 lambda 函数了。
3 项目:判断子字符串是否存在于字符串之中
给定一个字符串列表,创建一个由元组组成的新列表,每个元组由一个布尔值和对用的原字符串组成。这个布尔值表示字符串 'anonymous' 是否出现在源字符串中。
# 数据
txt = ['lambda functions are anonymous functions.',
'anonymous functions dont have a name.',
'functions are objects in Python.']
# 一行流
mark = map(lambda s: (True, s) if 'anonymous' in s else (False, s), txt)
# 1、map()函数会为列表中的每行原始文本添加一个布尔值,为True时表示该行文本包含由
# anonymous这个单词。闯入 map() 的第一个参数是各匿名 lambda 函数,第二参数是
# 要检查的文本字符串的列表
# 2、lambda 函数通过返回值表达式 (True, s) if 'anonymous' in s else (False, s)
# 来搜索 ‘anonymous’ 字符串,其中 s 是该 lambda 函数的输入参数。如果 s 中存在
# ‘anonymous’,则该表达式返回元组 (True, s),否则返回 (False, s)
# 结果,转换为列表
print(list(mark))
# 若不适用 list() 函数将其转换为列表,其返回值为一个 map 对象
# [(True, 'lambda functions are anonymous functions.'),
# (True, 'anonymous functions dont have a name.'),
# (False, 'functions are objects in Python.')]