匿名函数
def add(a, b):
return a + b
- 此类简单函数可以使用lambda表达式简写,如下:
lambda a,b: a+b
- 一方面lambda可以当做是一个函数,将其赋值给一个变量,那个变量就可以当成一个函数使用(但不常用),举例如下:
add = lambda a, b: a + b
print(add(3, 2))
这样就可以计算a与b的和
- 最常用的是将lambda表达式当做一个参数进行传递,举例应用场景如下:
def cal(a, b, fn): # 对两个数进行运算
s = fn(a, b)
return s
def add(a, b): #计算和
return a + b
def sub(a, b): #计算差
return a - b
- 当不确定运算规则时,可以将函数作为参数传递,这样一个函数就可以同时具有多种运算的功能
- add方法和sub函数比较简单,这个时候就可以用lambda表达式来代替,如下:
cal(3, 2, lambda a, b: a + b)
sort方法的参数key
nums = ['to', 'see', 'a', 'world', 'in', 'a', 'grain', 'of', 'sand']
nums.sort()
print(nums)
运行结果:
nums = ['to', 'see', 'a', 'world', 'in', 'a', 'grain', 'of', 'sand']
nums.sort(key=len)
print(nums)
运行结果:
当key参数为len时,就会按照长度排序,我们知道这个参数是一个函数
当列表元素为字典时,默认参数无法排序
students = [{'name': '张三', 'age': 15, 'height': 173},
{'name': '李四', 'age': 13, 'height': 168},
{'name': '王五', 'age': 18, 'height': 188},
]
students.sort()
print(students)
这个时候排序会报错
students = [{'name': '张三', 'age': 15, 'height': 173},
{'name': '李四', 'age': 13, 'height': 168},
{'name': '王五', 'age': 18, 'height': 188},
]
def fn(ele):
return ele['age']
students.sort(key=fn)
print(students)
当传入一个函数参数的时候
就可以按照指定的参数排序,这个时候可以使用lambda作为参数传入
students.sort(key=lambda ele: ele['age'])
print(students)
这样效果一样