Python的cmp_to_key()函数详解【部分翻译+leetcode题目分析】
2022/2/24 20:52:31
本文主要是介绍Python的cmp_to_key()函数详解【部分翻译+leetcode题目分析】,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
定义
- cmp_to_key() 使用键来比较元素
- 它内置在 functools 模块中,因此必须先导入 functools 才能使用该功能
- 与接受诸如 min()、max()、sorted() 等关键函数的工具一起使用。
- 只接受一个严格来说应该是可调用的参数
- 此函数返回可用于比较元素的特殊键
- 用于比较两个值并返回 1、-1 或 0
示例 1:使用 cmp_to_key() 函数提供的键对列表进行排序的程序
import functools def mycmp(a, b): print("comparing ", a, " and ", b) if a > b: return 1 elif a < b: return -1 else: return 0 print(sorted([1, 2, 4, 2], key=functools.cmp_to_key(mycmp)))
输出:
comparing 2 and 1 comparing 4 and 2 comparing 2 and 4 comparing 2 and 2 comparing 2 and 4 [1, 2, 2, 4]
示例 2:使用 cmp_to_key() 函数提供的键从列表中打印最大和最小数字的程序
import functools def mycmp(a, b): print("comparing ", a, " and ", b) if a > b: return 1 elif a < b: return -1 else: return 0 print(min([45, 78, 813], key=functools.cmp_to_key(mycmp))) print(max([45, 78, 813], key=functools.cmp_to_key(mycmp)))
输出:
comparing 78 and 45 comparing 813 and 45 45 comparing 78 and 45 comparing 813 and 78 813
-------------------------------------------------------以下是leetcode题目-----------------------------------------------
解决方法:
class Solution: def largestNumber(self, nums): def cmp_func(x, y): if x + y > y + x: return 1 elif x == y: return 0 else: return -1 nums = [str(num) for num in nums] nums.sort(key = cmp_to_key(cmp_func), reverse = True) return ''.join(nums).lstrip('0') or '0'
这篇关于Python的cmp_to_key()函数详解【部分翻译+leetcode题目分析】的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-08有遇到过吗?同样的规则 Excel 中 比Python 结果大
- 2024-03-30开始python成长之路
- 2024-03-29python optparse
- 2024-03-29python map 函数
- 2024-03-20invalid format specifier python
- 2024-03-18pool.map python
- 2024-03-18threads in python
- 2024-03-14python Ai 应用开发基础训练,字符串,字典,文件
- 2024-03-13id3 algorithm python
- 2024-03-13sum array elements python