m0_74189992 2023-03-14 20:41 采纳率: 83.3%
浏览 16
已结题

python有关sort的应用

这是上课的一个例子
aList = [123,'56', 123, 1, '10']
aList.sort(key=str,reverse=False)
print ("List : ", aList)
print ("List : ", aList.sort(key=str))
输出:
List : [1, '10', 123, 123, '56'] List:None
请问像这种数字字符串类型的是怎么排序的?(比如元素为数值类型就按数值升序,降序排序)
上面那个aList又是怎么排的呢?

  • 写回答

2条回答 默认 最新

  • 爱音斯坦牛 全栈领域优质创作者 2023-03-14 20:57
    关注

    回答如下,记得采纳一下哦!
    当排序的元素类型不相同时,Python 会自动将它们转化为同一类型再进行比较。在上面的例子里,由于aList列表中同时包含了数字和字符串类型的元素,为了能够对这些元素进行排序,Python 需要先将数字类型的元素转换成字符串类型的元素,然后再进行比较。

    具体来说,sort()方法中的 key=str 指定了以字符串类型为基准进行排序。因此,在排序过程中,每个元素都会先被转换成字符串类型,然后再按照字符串的大小关系进行比较。

    将数字类型的元素转换成字符串之后,其排序规则就变成了按照字符串的大小进行排序。在字符串中,数字 1 的 ASCII 码值比数字 5 要小,因此第一个元素 123 在排序后会排在 '56' 前面。同理,'10' 的 ASCII 码值比 1 要大,因此它排在 123 后面。最后,由于相同的元素会保留在原来的相对位置上,因此两个 123 会放在一起。

    综上所述,对于包含多种类型元素的列表,要想按照某种规则进行排序,需要指定一个 key 函数,以告诉 Python 如何将不同类型的元素转换成同一类型,然后再进行排序。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 修改了问题 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥15 像这种代码要怎么跑起来?
  • ¥15 怎么改成循环输入删除(语言-c语言)
  • ¥15 安卓C读取/dev/fastpipe屏幕像素数据
  • ¥15 pyqt5tools安装失败
  • ¥15 mmdetection
  • ¥15 nginx代理报502的错误
  • ¥100 当AWR1843发送完设置的固定帧后,如何使其再发送第一次的帧
  • ¥15 图示五个参数的模型校正是用什么方法做出来的。如何建立其他模型
  • ¥100 描述一下元器件的基本功能,pcba板的基本原理
  • ¥15 STM32无法向设备写入固件