【学习笔记】关于匿名函数 λ 的几个例子

查看 42|回复 0
作者:whyerect   
例一:把列表中的学生按年龄排序
[Python] 纯文本查看 复制代码students = [
    {"姓名": "张三", "年龄": 18},
    {"姓名": "李四", "年龄": 7},
    {"姓名": "王五", "年龄": 99},
    {"姓名": "赵六", "年龄": 30},
    {"姓名": "田七", "年龄": 22}
]
print("排序前:", students)
students.sort(key=lambda x: x["年龄"])
print("排序后:", students)
如果不用匿名函数lambda,用普通函数怎么做?
[Python] 纯文本查看 复制代码def sort_func(item):
    return item["年龄"]
students = [
    {"姓名": "张三", "年龄": 18},
    {"姓名": "李四", "年龄": 7},
    {"姓名": "王五", "年龄": 99},
    {"姓名": "赵六", "年龄": 30},
    {"姓名": "田七", "年龄": 22}
]
print("排序前:", students)
students.sort(key=sort_func)
print("排序后:", students)
输出结果:
排序前: [{'姓名': '张三', '年龄': 18}, {'姓名': '李四', '年龄': 7}, {'姓名': '王五', '年龄': 99}, {'姓名': '赵六', '年龄': 30}, {'姓名': '田七', '年龄': 22}]
排序后: [{'姓名': '李四', '年龄': 7}, {'姓名': '张三', '年龄': 18}, {'姓名': '田七', '年龄': 22}, {'姓名': '赵六', '年龄': 30}, {'姓名': '王五', '年龄': 99}]

例二:sorted 函数可以用
[color=]key=函数名
对排序的列表先进行函数变换再排序
[Python] 纯文本查看 复制代码num_list = [45, -100, -57, 666, 0]
# 先对列表取绝对值再进行排序
num_list_1 = sorted(num_list, key=abs)
print(num_list_1)
输出结果:
[0, 45, -57, -100, 666]
[Python] 纯文本查看 复制代码my_list = ["abcd", "a", "ab", "abc", "12345", "1"]
my_list_1 = sorted(my_list, key=lambda x: len(x))
print(my_list_1)
输出结果:
['a', '1', 'ab', 'abc', 'abcd', '12345']

例三:min 函数可以用
[color=]key=函数名
对求最小值的列表先进行函数变换再排序
有一个列表比如 [1, 2, 3,  ......10] 需求是用户输入一个小数,比如:3.14,要求判断输入的小数距离列表中哪个数最近,如何实现?
[Python] 纯文本查看 复制代码my_list = list(range(1, 11))
my_num = float(input("请输入1-10之间的小数:"))
result = min(my_list, key=lambda x: abs(x-my_num))
print(result)

年龄, 姓名

您需要登录后才可以回帖 登录 | 立即注册