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

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 12:57
    关注

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

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

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

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

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

报告相同问题?

问题事件

  • 系统已结题 3月21日
  • 已采纳回答 3月14日
  • 修改了问题 3月14日
  • 创建了问题 3月14日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部