""" 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