【发布时间】:2021-01-16 08:41:47
【问题描述】:
当我在 python 中的列表上使用排序函数时,我没有得到我期望的结果。 就像我试图对这个列表进行排序一样:
numbers = ['4', '5', '29', '54', '4', '0', '-214', '542', '-64', '1', '-3', '6', '-6']
排序后,我得到:
['-214', '-3', '-6', '-64', '0', '1', '29', '4', '4', '5', '54', '542', '6']
那么这里为什么打印 6>542 ?? 我还使用了 max() 函数,它返回 6。
我通过在排序函数中提供key=int得到了正确的结果,但是为什么没有key就这样打印呢?
【问题讨论】:
-
它将它们排序为字符串,因为它们是字符串。排序前做
numbers = [int(num) for num in numbers]得到你想要的结果 -
因为它将它们按字符串排序,即按字典顺序。
-
当您使用
key=int时,它会在比较每个元素之前调用int函数,因此这些元素将转换为整数,您会得到您所期望的结果。
标签: python-3.x list sorting integer max