python排序问题

sorted([13,1,237,89,100],key=lambdax:len(str(x)))key是列表中每个元素的转换成字符串后,根据长度来排序按照个人理解,结果应该是[1,13,89,100,237],即:先按照长度排序,长度一样的,则按照大小排序但是执行后输出结果是[1,13,89,237,100]为什么237会在100前面,百思不得其解,求指教

这个是因为原始的列表中237是在100的前面,这个只是进行长度排序

len长度分别是2 1 3 2 3,你先执行的是len,再是lambda ,最后sorted,对2(13) 1(1) 3(237) 2(89) 3(100) 进行排序就是1(1) 2(13) 2(89) 3(237) 3(100) ,这样的顺序。 你可以尝试把13和89换个位置,最后的排序结果是89在前13在后。

img