python学习站 /学习python第三周
阅读主题
正文字体
字体大小

18.常见的实参高阶函数

本节2453字2025-04-09 16:48:56
"""
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)))


网友评论

相关作品