小甲鱼Python教程第21讲--python函数:lambda表达式习题及答案

1.匿名函数与lambda表达式

def ds(x):
    return 2*x+1

lambda x:2*x+1  #lambda表达式
g=lambda x:2*x+1
g(5)
使用lambda表达式

lambda表达式的作用
1)lambda可以省下定义函数的过程,不用专门定义一个函数然后在写调用,使用lambda就可以使代码更加精简
2)有些只需要调用一两次的函数,使用lambda不需要考虑函数命名问题
3)简化代码的可读性,省去def()定义过程

2.两个牛逼的BIF
1)filter函数()
filter(func,seq)func为函数,seq为序列,用于过滤数据

def odd(x):
    return x%2
 temp=range(10)
 show=filter(odd,temp)
 list(show)
结果为: [1, 3, 5, 7, 9]

利用lambda也可以:
list(filter(lambda x:x%2,range(10)))
[1, 3, 5, 7, 9]

2)map()函数
语法:map(func,seq)
seq中每一个参数都被func加工计算,返回一个新的参数

ist(map(lambda x:x*2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

习题及答案
0.请使用lambda表达式将下边函数转变为匿名函数?

def fun_A(x,y=3):
    return x*y
答案:lambda x,y=3:x*y

1.请将下边的匿名函数转变为普通函数?

lambda x:x if x%2 else None
def odd(x):
    if x%2:
        return x
    else:
        return None

2.用filter()函数和lambda表达式快速求出100以内所有3的倍数?

list(filter(lambda x:x if x%3==0 else None,range(100)))

3.还记得zip函数吗?例如

listzip[1,2,3],[4,5,6]))
[(1,4),(2,5),(3,6)]

但如果希望打包的形式是灵活多变的列表而不是元组,你能做到吗(采用map和lambda表达式的形式)

list(map(lambda x,y:[x,y],[1,3,5,7,9],[2,4,6,8,10]))

结果为:
[[1, 2], [3, 4], [5, 6], [7, 8], [9, 10]]

4.请目测一下表达式会打印什么?

def make_repeat(n):
    return lambda s:s*n
double=make_repeat(2)
print(double(8))
print(double('fishC'))

会打印:
16
fishCfishC
Lambda函数是一种创建匿名函数的方式,在Python中非常便捷且强大,特别是在需要快速定义简短的一次性使用的函数场景下。它们通常用于对数据集进行映射、过滤或排序操作。 ### Python Lambda函数基本语法: ```python lambda 参数列表: 表达式 ``` **例子:** 假设我们有一个列表 `numbers = [10, 20, 30, 40]`,我们想要创建一个新的列表只包含偶数,并打印这个新列表。 我们可以使用一个简单的lambda函数结合列表推导式来完成这个任务: ```python numbers = [10, 20, 30, 40] even_numbers = list(filter(lambda x: x % 2 == 0, numbers)) print(even_numbers) ``` 在这个例子中,`lambda x: x % 2 == 0` 是我们的lambda函数,它接收一个参数 `x` 并返回一个布尔值,即 `x` 是否能被2整除(即是否为偶数)。`filter()` 函数则使用这个条件从原始列表 `numbers` 中筛选出符合条件的元素。 ### 更复杂的Lambda函数: 如果需要更复杂的功能,比如除了检查奇偶性之外还需要做其他计算,可以将表达式构建得更复杂一些: ```python # 计算列表中每个元素的平方并返回新的列表 squared_numbers = list(map(lambda x: x * x, numbers)) print(squared_numbers) # 对列表进行排序 sorted_numbers = sorted(numbers, key=lambda x: abs(x - 5)) # 根据元素距离数字5的距离进行排序 print(sorted_numbers) ``` ### Lambda函数的限制: 虽然Lambda函数在某些情况下提供了一种简洁的方式来处理小规模的问题,但在编写大型程序时,过多地使用Lambda函数可能会使得代码难以理解和维护。因此,对于功能相对独立且容易理解的简短代码块,Lambda函数是一个很好的选择;而对于复杂的业务逻辑或需要详细文档说明的操作,则推荐使用标准的def关键字定义函数。 --- ## 相关问题: 1. **如何将Lambda函数与map()和filter()函数结合使用进行数据转换和筛选?** 2. **当需要处理大量数据并且性能至关重要时,Lambda函数的优势在哪里?** 3. **何时应该避免使用Lambda函数而采用传统的def定义函数?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值