这是上课的一个例子
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又是怎么排的呢?
python有关sort的应用
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 回答如下,记得采纳一下哦!
当排序的元素类型不相同时,Python 会自动将它们转化为同一类型再进行比较。在上面的例子里,由于aList列表中同时包含了数字和字符串类型的元素,为了能够对这些元素进行排序,Python 需要先将数字类型的元素转换成字符串类型的元素,然后再进行比较。具体来说,sort()方法中的 key=str 指定了以字符串类型为基准进行排序。因此,在排序过程中,每个元素都会先被转换成字符串类型,然后再按照字符串的大小关系进行比较。
将数字类型的元素转换成字符串之后,其排序规则就变成了按照字符串的大小进行排序。在字符串中,数字 1 的 ASCII 码值比数字 5 要小,因此第一个元素 123 在排序后会排在 '56' 前面。同理,'10' 的 ASCII 码值比 1 要大,因此它排在 123 后面。最后,由于相同的元素会保留在原来的相对位置上,因此两个 123 会放在一起。
综上所述,对于包含多种类型元素的列表,要想按照某种规则进行排序,需要指定一个 key 函数,以告诉 Python 如何将不同类型的元素转换成同一类型,然后再进行排序。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥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语言编的代码什么意思?