# python 使用 lambda 来创建匿名函数。
# 所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
# lambda 只是一个表达式,函数体比 def 简单很多。
# lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
# lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
# 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
# lambda 函数的语法只包含一个语句,如下:
# lambda [arg1 [,arg2,.....argn]]:expression
# 如下实例:
func = lambda _value1, _value2: _value1 + _value2
print(func(1, 2)) # >>>3
# 三元运算
'''
if a:
b
else:
c
可以等效为: b if a else c
'''
# 例如
print('憨批') if 2 > 1 else print('笨蛋')
age = 19
print('继续上学吧' if age < 18 else '可以参军了')
# 可放在lambda中实现选择逻辑
# 例如:
_max = lambda x, y: x if x > y else y
print(_max(8, 10)) >>10
# 可把参数放在最后
_min = (lambda x, y: x if x < y else y)(15, 18)
print(_min) >>15
# lambda缺点:只能是单个表达式,不是一个代码块,设计只是满足简单函数的场景,仅仅能封装有限的逻辑。
lambda函数与Python内置函数配合使用
member_list = [
{"name": "唐三", "age": 99, "power": 10000},
{"name": "小舞", "age": 89, "power": 9000},
{"name": "唐昊", "age": 120, "power": 8000}
]
new_list = sorted(member_list, key=lambda dict_: dict_["power"])
print(new_list)
[{'name': '唐昊', 'age': 120, 'power': 8000}, {'name': '小舞', 'age': 89, 'power': 9000}, {'name': '唐三', 'age': 99, 'power': 10000}]
sort()函数
sort(*, key=None, reverse=False)
此方法会对列表进行原地排序,只使用 < 来进行各项间比较。 异常不会被屏蔽 —— 如果有任何比较操作失败,整个排序操作将失败(而列表可能会处于被部分修改的状态)。
sort() 接受两个仅限以关键字形式传入的参数 (仅限关键字参数):
key 指定带有一个参数的函数,用于从每个列表元素中提取比较键 (例如 key=str.lower)。 对应于列表中每一项的键会被计算一次,然后在整个排序过程中使用。 默认值 None 表示直接对列表项排序而不计算一个单独的键值。
reverse 为一个布尔值。 如果设为 True,则每个列表元素将按反向顺序比较进行排序。
sorted(iterable, *, key=None, reverse=False)
根据 iterable 中的项返回一个新的已排序列表。
具有两个可选参数,它们都必须指定为关键字参数。
key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。 默认值为 None (直接比较元素)。
reverse 为一个布尔值。 如果设为 True,则每个列表元素将按反向顺序比较进行排序。