根据元素的第一个数字对列表进行排序

时间:2017-06-19 05:13:57

标签: python-3.x

这就是我想要的

lis = [55,57,7,48,73,5]

根据第一个数字按降序排序后

lis = [73,7,57,55,5,48]

这是我尝试的但它只按递减顺序返回完整的数字

lis.sort(reverse=True)
lis = [73,57,55,48,7,5]

2 个答案:

答案 0 :(得分:1)

我会在我链接的问题中调整答案,因为该解决方案涉及从文件中读取(尽管答案非常相似)。 sort()函数接受一个名为key的参数,该参数指示在对列表进行排序时要使用的函数。

lis.sort(key=lambda x: int(str(x)[0]))

在上面的函数中,int(str(x)[0])将每个元素转换为一个字符串,取第一个字符(这将是第一个数字),并将其转换回整数。然后,Python根据第一个数字对数字进行排序。

答案 1 :(得分:0)

对字符串进行排序

如果您要对 int 列表进行排序,例如:

a = [1, 2, 3, 4, 5, 10, 11, 12, 13, 20, 22, 30]
print(sorted(a))

>>>
[1, 2, 3, 4, 5, 10, 11, 12, 13, 20, 22, 30]

现在,如果您要对同一个列表进行排序,但每个元素都是一个字符串对象:

a = ['1', '2', '3', '4', '5', '10', '11', '12', '13', '20', '22', '30']
print(sorted(a))

>>>
['1', '10', '11', '12', '13', '2', '20', '22', '3', '30', '4', '5']