马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
data=list(range(20))
print(data)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
data.sort(key=lambda x:len(str(x)))
data
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
data.sort(key=lambda x:len(str(x)),reverse=True)
data
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
为什么输出结果不相反呢?
这是因为在排序时,使用了两个不同的lambda函数作为key参数。
首先,使用lambda函数 lambda x:len(str(x)) 对列表进行排序,该函数返回每个元素的长度。由于所有元素的长度都是相同的,所以排序结果与原列表相同,即升序排列。
然后,使用lambda函数 lambda x:len(str(x)) 作为key参数,并将 reverse=True 传递给sort函数,这意味着按降序进行排序。在这种情况下,排序结果会根据元素长度进行降序排列,但由于元素的长度仍然是相同的,所以排序结果与原列表相同,即升序排列。
如果想要按降序排列,可以使用以下代码:data.sort(key=lambda x:len(str(x)), reverse=True)
print(data)
输出结果为:[10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
这样,列表将按照元素的长度进行降序排列。
|