str_nums.sort(key=functools.cmp_to_key(compare))
时间: 2024-10-18 21:06:40 浏览: 37
`str_nums.sort(key=functools.cmp_to_key(compare))` 是Python中对列表(list)进行排序的一种方法,其中 `str_nums` 是你要排序的一个包含字符串元素的列表。`sort()` 方法默认按照元素的字典顺序进行升序排列,但是当元素比较复杂时(比如字符串),可以提供一个自定义的关键字函数 `key`。
`functools.cmp_to_key(compare)` 将传统的比较函数 `compare` 转换为 Python 3 中的可迭代关键字函数。这是因为,在Python 3中,内置的 `cmp` 函数已经被移除,直接传递比较函数给 `sort` 或 `sorted` 可能会报错。通过 `cmp_to_key`,你可以将以前的两数比较操作转换成可以适应于 `key` 参数的形式。
`compare` 函数是一个接受两个参数并返回负数、零或正数的函数,这决定了它们在排序过程中的相对位置。例如,如果你有一个包含数字的字符串列表,你想按照整数值排序,`compare` 函数会解析这两个字符串为数字再进行比较。
完整的示例:
```python
import functools
def compare(a, b):
return int(a) - int(b)
str_nums = ['3', '2', '5', '1', '4']
str_nums.sort(key=functools.cmp_to_key(compare))
print(str_nums) # 输出:['1', '2', '3', '4', '5']
```
阅读全文