《Python一行流》学习笔记2——lambda和map函数

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.')]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值