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/

posted @ 2022-10-13 13:34  酷酷的排球  阅读(77)  评论(0编辑  收藏  举报