第六章 3 函数-匿名函数 练习题

第六章 3 函数-匿名函数 练习题
[基础知识]
1 什么是 lambda 函数? 有什么好处?
lambda函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数
优点:
1、lambda函数比较轻便,即用即扔,很适合需要完成一项功能,但是此功能只在此一处使用,连
函数名字都很随意的场景
2、匿名函数,一般用来给filter、map这样的函数式编程服务
3、作为回调函数,传递给某些应用,比如消息处理。

2 什么是 lambda 函数?它有什么好处?写一个匿名函数求两个数的和?
lambda函数是匿名函数,使用lambda函数能创建小型匿名函数,这种函数省略了定义函数时的def步骤。
f = lambda x, y:x+y
print(f(2022, 2023))

3 表达式 sorted([111, 2, 33], key=lambda x: len(str(x))) 的值为
[2,33,111]


4 已知 x = [1, 11, 111],那么执行语句 x.sort(key=lambda x:len(str(x)), reverse=True)
之后,x 的值为__________________
[111,11,1]

5 已知 g = lambda x, y=3, z=5: xyz,则语句 print(g(1)) 的输出结
果为_______
g = lambda x, y=3, z=5: x*y*z
print(g(1)) # 15


6 已知 f = lambda x: x+5,那么表达式 f(3) 的值为________
8

7 表达式 sorted([‘abc’,‘acd’,‘ade’], key=lambda x:(x[0],x[2]))
的值为_____________
['abc', 'acd', 'ade']

8 已知 g = lambda x, y=3, z=5: x+y+z,那么表达式 g(2) 的值为
10


9 已知 f = lambda x: 5,那么表达式 f(3)的值为_____________
5

[进阶拓展]
1 下面这段代码的输出是什么
nums = range(2,20)
for i in nums:
nums = filter(lambda x:x==i or x % i, nums)
print(list(nums))
# 答案:
如果打印这一行在现在这个位置 ,输出的是:[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19]
如果打印在循环内部,输出的是20以内的质数[3,5,7,11,13,17,19]

2 请按 alist 中元素的 age 由大到小排序
alist = [{'name': 'a', 'age': 20},
{'name': 'b', 'age': 30},
{'name': 'c', 'age': 25}]
blist = sorted(alist, key=lambda x:x['age'],reverse=False)
print(blist) # [{'name': 'a', 'age': 20}, {'name': 'c', 'age': 25}, {'name': 'b', 'age': 30}]


[面试真题]
1 有如下程序片段,请写出执行后 #
x = 10
a = lambda y: x + y
x = 20
b = lambda y: x + y
print(a(10)) # 1
print(b(10)) # 2
'''运行结果
30
30
分析: 执行的时候,看函数用到的最新值是多少


2 下面是股票名和价格的映射字典,要求找出最低和最高价格和股票的代码
price = {
'ACME': 45.23,
'AAPL': 612.78,
'IBM': 205.55,
'HPQ': 37.2,
'FB': 10.75
}
# 排序后的取值方法
price4 = sorted(price.items())
print(price4)
price_high = max(price4,key = lambda x :x[1])
print(price_high) # ('AAPL', 612.78)

price_min = min(price4,key = lambda x:x[1])
print(price_min) # ('FB', 10.75)

# 单独求最高的价格与代码
high_price = max(price,key=lambda x:price[x])
print(f'价格最高为{high_price},其代码为{price.get(high_price)}') # 价格最高为AAPL,其代码为612.78


3 字符串 List 按照长度排序 Python 代码,降序排列。8 分
list = [‘青海省’,‘内蒙古自治区’,‘西藏自治区’,‘新疆维吾尔自治区’,‘广西壮族自治区’]
###
mylist = sorted(list,key = lambda x:len(x),reverse=True)
print(mylist) # ['新疆维吾尔自治区', '广西壮族自治区', '内蒙古自治区', '西藏自治区', '青海省']


4 关于 Python 的 lambda 函数,以下选项中描述错误的是( )
• A:lambda 函数将函数名作为函数结果返回
• B:f = lambda x,y:x+y 执行后,f 的类型为数字类型
• C:lambda 用于定义简单的、能够在一行内表示的函数
• D:可以使用 lambda 函数定义列表的排序原则

B


5 假设有一个 list,里面的每个元素是 dict,内容如下:
example_list = [{‘name’:‘a’, ‘age’:11}, {‘name’:‘b’, ‘age’:2},{‘name’: ‘c’,‘age’:
3},{‘name’: ‘c’,‘age’: 3},{‘name’: ‘b’, ‘age’:1}, {‘name’: ‘a’, ‘age’: 3}]
需求 1:将这个 list 按 age 倒序排列
需求 2:将这个 list 同时按 name 和 age 排序,name 的优先级更高:

sort_list = sorted(example_list, key= lambda x:x['age'],reverse=True)
print(sort_list)
# [{'name': 'a', 'age': 11}, {'name': 'c', 'age': 3}, {'name': 'c', 'age': 3}, {'name': 'a', 'age': 3}, {'name': 'b', 'age': 2}, {'name': 'b', 'age': 1}]


sort_list = sorted(example_list, key = lambda x:(x['name'],x['age']),reverse=False)
print(sort_list)
# [{'name': 'a', 'age': 3}, {'name': 'a', 'age': 11}, {'name': 'b', 'age': 1}, {'name': 'b', 'age': 2}, {'name': 'c', 'age': 3}, {'name': 'c', 'age': 3}]


posted @ 2022-09-06 15:19  六八少年  阅读(410)  评论(0编辑  收藏  举报