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日

悬赏问题

  • ¥50 求解vmware的网络模式问题
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?