关于匿名函数 lambda 的几个例子
例一:sorted 函数可以用 key=函数名
对排序的列表先进行函数变换再排序
num_list = [45, -100, -57, 666, 0]
# 先对列表取绝对值再进行排序
num_list_1 = sorted(num_list, key=abs)
print(num_list_1)
输出结果:
[0, 45, -57, -100, 666]
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 函数可以用 key=函数名
对求最小值的列表先进行函数变换再排序
有一个列表比如 [1, 2, 3, ......10] ,现在的需求是:用户输入一个小数,比如:3.14,要求判断输入的小数距离列表中哪个数最近,如何实现?
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)
例三:顾安老师上课讲的例子:
把列表中的学生按年龄排序
students = [
{"姓名": "张三", "年龄": 18},
{"姓名": "李四", "年龄": 7},
{"姓名": "王五", "年龄": 99},
{"姓名": "赵六", "年龄": 30},
{"姓名": "田七", "年龄": 22}
]
print("排序前:", students)
students.sort(key=lambda x: x["年龄"])
print("排序后:", students)
如果不用匿名函数lambda,用普通函数怎么做?
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}]