"""
Auther:少校
Time:2025/4/9 14:30
越努力,越幸运
"""
# 1. max/min/sorted/sort
"""
max(容器) - 直接比较元素本身的大小求最大值
max(容器,key=函数) - 根据函数指定的比较规则来比较容器中元素的大小求最大值
"""
# #案例1:求nums中个位数最大的元素
# nums = [208,57,19,37,46,72,91]
# print(max(nums,key=lambda item: item % 10))
# print(min(nums, key=lambda item: abs(item)))
#
# # 练习1:将str_list中的元素按照字符串长度从大到小排序
# str_list = ['Hello', '你好', 'go', '早上好', 'good good study!']
# print(sorted(str_list,reverse=True,key=lambda item: len(item)))
# # 练习2:求nums中十位数最小的元素
# nums = [228, 57, 809, 37, 46, 72, 91]
# print(min(nums, key=lambda item: item % 100 // 10))
# # 练习3: 求points中y坐标最大的元素
# points = [(10, 9), (-18, 108), (100, 99), (97, 56)]
# print(max(points, key=lambda item: item[-1]))
# 2. map - 基于容器中的元素,按照指定的规则,构建一个新的容器
"""
map(函数,容器)
函数的要求:1) 有且只有一个参数
2) 有一个返回值,返回值就是新的容器中的元素
map(函数,容器1,容器2)
函数的要求:1) 有且只有2个参数,分表代表后面两个容器中的每个元素
2) 有一个返回值,返回值就是新的容器中的元素
map(函数,容器1,容器2....)
"""
#案例:获取nums中所有元素的个位数
nums = [208,57,19,37,46,72,91]
print(list(map(lambda x: x % 10, nums)))
# 3. reduce - 讲容器中的所有元素合并成一个数据
from functools import reduce
"""
reduce(函数,容器,初始值)
函数的要求:1) 有且只有两个参数,第一个参数代表初始值,第二个值代表容器中的每个元素
2) 需要一个返回值,返回值就是合并方式
"""
# 案例1:求nums中所有元素的和
nums = [208,57,19,37,46,72,91]
print(reduce(lambda i,x : x + i ,nums,0)) #要定义两个参数,第一个参数是初始值的参数,第二个是每个元素
# 练习:将names中所有的姓拼接成一个字符串
names = ['张三', '李四', '王五', '张无忌', '周芷若', '赵敏']
print(reduce(lambda i, x: i + x[0], names, ""))
# 4. filter - 获取容器中满足条件的数据
#案例1:获取nums中所有偶数
nums = [208,57,19,37,46,72,91]
print(list(filter(lambda x: x % 2 == 0, nums)))
#案例2:提取所有姓张的人的名字
names = ['张三', '李四', '王五', '张无忌', '周芷若', '赵敏']
print(list(filter(lambda x: x[0] == "张", names)))
# 练习1:计算list1中所有数字的和
list1 = ['abc', 120, 3.45, '你好', [10, 20], 100]
print(reduce(lambda i, x: i + x if type(x) == int or type(x) == float else i + 0 ,list1, 0))
# 练习2:使用map函数将keys和values两个列表组合成一个字典
keys = ['name', 'age', 'gender', 'score']
values = ['小明', 18, '男', 99]
# {'name': '小明', 'age': 18,...}
print(dict(map(lambda x,y:(x,y), keys,values)))18.常见的实参高阶函数
本节2453字2025-04-09 16:48:56