python functools 模块
python functools 模块
常见API
cmp_to_key
cmp_to_key()
是将比较函数转化为 关键字函数。
与使用接受关键字函数的方法一同使用, 如(sorted(), min(), max()...),
改函数主要将程序转换成python3 格式的,因为python3 中不支持比较函数cmp()
-
比较函数是可调用的,接受两个参数,比较这两个参数,
例如:x,y 当x>y时返回1;等于时返回0;否则返回-1。
关键字函数也是可调用的,接受一个参数,同时返回一个可以用作排序关键字的值。
-
采用cmp_to_key()函数,可以接受两个参数,将两个参数做处理,
例如:作和 作差等,转换成一个参数,即可应用于关键字函数
eg:
from functools import cmp_to_key
nums = [3, 30, 34, 5, 9]
new_nums = sorted(nums, key=cmp_to_key(lambda x, y: y - x))
new_nums2 = sorted(nums, key=cmp_to_key(lambda x, y: x - y))
print(new_nums)
print(new_nums2)
#结果:
#[34, 30, 9, 5, 3]
#[3, 5, 9, 30, 34]
from functools import cmp_to_key
nums = [3, 30, 34, 5, 9]
nums2 = map(str, nums)
new_nums2 = sorted(nums2, key=cmp_to_key(lambda x, y: int(x + y) - int(y + x)))
print(new_nums2)
#结果:
#['30', '3', '34', '5', '9']
from functools import cmp_to_key
nums = [3, 30, 34, 5, 9]
nums2 = map(str, nums)
new_nums3 = sorted(nums2, key=cmp_to_key(lambda x, y: int(x + y) - int(y + x)), reverse=True)
print(new_nums3)
#结果:
#['9', '5', '34', '3', '30']
原文链接:https://blog.csdn.net/chl183/article/details/106964281/