>>> x = list(range(11))
>>> import random
>>> random.shuffle(x)
>>> x
[6, 0, 1, 7, 4, 3, 2, 8, 5, 10, 9] #A
>>> x.sort(key=lambda item:len(str(item)), reverse = True) #a
#按转换成字符串以后的长度
#降序排列
>>> x
[10, 6, 0, 1, 7, 4, 3, 2, 8, 5, 9] #B
在这几行代码中首先给出了一个打乱顺序的列表。
在输入a代码后,重新编排了顺序。
对比A与B列表来说,这行代码的功能其实就是实现了吧转化为字符串后长度较长的“10”,放在了最前面,也就是我们所说的降序,而其他的都是一位的字符串长度,故顺序没有变化的排在了后面。
对于以下的代码:
#将就以上的那个列表 x = [10, 6, 0, 1, 7, 4, 3, 2, 8, 5, 9]
>>> x.sort(key=str)
>>> x
[0, 1, 10, 2, 3, 4, 5, 6, 7, 8, 9]
这是一个转化为字符串后的升序排列 。
那,为什么10会在1和2的中间呢?
我们做以下的尝试
>>> x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12]
>>> x.sort(key=str)
>>> x
[0, 1, 10, 12, 2, 3, 4, 5, 6, 7, 8, 9]
>>> x.append(101)
>>> x.sort(key=str)
>>> x
[0, 1, 10, 101, 12, 2, 3, 4, 5, 6, 7, 8, 9]
我们会发现12排在了10的后面,2的前面,那么可能的原因就是这个排序的方式就是先考虑的第一位,例如10 之所以在1和2之间是因为10的第一位是1,是比2小的所以10在2的前面,10第二位是0,而1是没有第二位的, 所以10在1的后面。
我们用101来测试,果然101存在于10与12之间。