如题所述
第1个回答 2024-08-26
Python函数作为参数传递
Python中函数自身可作为参数传给其他函数,例如`sorted()`的`key`参数需接收一个函数。
未指定`key`参数时,`sorted()`会直接比较传入序列元素,决定排序顺序。
指定`key`参数时,`sorted()`会将`key`函数作用于序列元素,比较作用后的结果来排序。
举例:若`sorted()`第一个参数为序列`iterable = [a1, a2, a3, ...]`,未指定`key`参数,直接比较元素进行排序。
若指定`key`为函数`get()`,则比较`get(a1)`、`get(a2)`决定排序顺序。
lambda函数简化定义
lambda函数适用于局部定义后即用的场景,如简化表达式计算或排序逻辑。
例如,用lambda函数实现列表元素平方决定排序,与传统`def`方式对比,lambda函数定义与使用更为紧凑。
举例:通过lambda函数`sorted([1, 2, 3], key=lambda x: x**2)`实现列表元素平方排序。
处理多维列表排序
处理多维列表排序时,如需根据特定子列表项排序,需明确传入对应函数。
未指定`key`参数,`sorted()`可能默认排序策略,导致非预期结果。
明确传入函数,如针对年龄排序,`sorted(列表, key=lambda x: x[1])`即可实现。
避免重名问题
确保函数参数命名避免与全局变量名冲突,影响代码可读性。
修正示例:将`lambda`函数内的`sum_total`改为`item`,以清晰表示`item`为每个字典项。
在`lambda`函数中,`item`代表字典`sum_total`的每一项,通过`item[1]`获取排序依据的值。
Python中函数自身可作为参数传给其他函数,例如`sorted()`的`key`参数需接收一个函数。
未指定`key`参数时,`sorted()`会直接比较传入序列元素,决定排序顺序。
指定`key`参数时,`sorted()`会将`key`函数作用于序列元素,比较作用后的结果来排序。
举例:若`sorted()`第一个参数为序列`iterable = [a1, a2, a3, ...]`,未指定`key`参数,直接比较元素进行排序。
若指定`key`为函数`get()`,则比较`get(a1)`、`get(a2)`决定排序顺序。
lambda函数简化定义
lambda函数适用于局部定义后即用的场景,如简化表达式计算或排序逻辑。
例如,用lambda函数实现列表元素平方决定排序,与传统`def`方式对比,lambda函数定义与使用更为紧凑。
举例:通过lambda函数`sorted([1, 2, 3], key=lambda x: x**2)`实现列表元素平方排序。
处理多维列表排序
处理多维列表排序时,如需根据特定子列表项排序,需明确传入对应函数。
未指定`key`参数,`sorted()`可能默认排序策略,导致非预期结果。
明确传入函数,如针对年龄排序,`sorted(列表, key=lambda x: x[1])`即可实现。
避免重名问题
确保函数参数命名避免与全局变量名冲突,影响代码可读性。
修正示例:将`lambda`函数内的`sum_total`改为`item`,以清晰表示`item`为每个字典项。
在`lambda`函数中,`item`代表字典`sum_total`的每一项,通过`item[1]`获取排序依据的值。