这是上课的一个例子
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又是怎么排的呢?
这是上课的一个例子
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 会自动将它们转化为同一类型再进行比较。在上面的例子里,由于aList列表中同时包含了数字和字符串类型的元素,为了能够对这些元素进行排序,Python 需要先将数字类型的元素转换成字符串类型的元素,然后再进行比较。
具体来说,sort()方法中的 key=str 指定了以字符串类型为基准进行排序。因此,在排序过程中,每个元素都会先被转换成字符串类型,然后再按照字符串的大小关系进行比较。
将数字类型的元素转换成字符串之后,其排序规则就变成了按照字符串的大小进行排序。在字符串中,数字 1 的 ASCII 码值比数字 5 要小,因此第一个元素 123 在排序后会排在 '56' 前面。同理,'10' 的 ASCII 码值比 1 要大,因此它排在 123 后面。最后,由于相同的元素会保留在原来的相对位置上,因此两个 123 会放在一起。
综上所述,对于包含多种类型元素的列表,要想按照某种规则进行排序,需要指定一个 key 函数,以告诉 Python 如何将不同类型的元素转换成同一类型,然后再进行排序。
报告相同问题?