1.简单排序
lst1 = (5,4,2,-1,3)
lst2 = ('F','k','A','a','B','b')#字符串类型的排序按照ASCII的大小进行比较
L1 = sorted(lst1)
L2 = sorted(lst2)
print(L1)
print(L2)
#[-1, 2, 3, 4, 5]
#['A', 'B', 'F', 'a', 'b', 'k']
lst1 = ["banana", "apple", "cherry","ao"]
L1 = sorted(lst1)
print(L1)
#['ao', 'apple', 'banana', 'cherry']
A-Z(ASCII值): 65-90
a-z(ASCII值): 97-122
按照每个字符串字母顺序排序的结果。o < p 所以ao排在apple前面
2.升序/降序
lst1 = (5,4,2,-1,3)
lst2 = ('F','k','A','a','B','b')
L1 = sorted(lst1)#默认是False,升序
L2 = sorted(lst1, reverse = False)
L3 = sorted(lst1, reverse = True)
print(L1)
print(L2)
print(L3)
#[-1, 2, 3, 4, 5]
#[-1, 2, 3, 4, 5]
#[5, 4, 3, 2, -1]
3.参数 key
(1)按长度排序
用于字符串、列表等,可以根据长度来排序。
lst1 = ["banana", "apple", "cherry"]
L1 = sorted(lst1, key=len)
print(L1)
#['apple', 'banana', 'cherry']
(2)忽略字母大小写排序
lst1 = ["banana", "Apple", "cherry"]
L1 = sorted(lst1, key=str.lower)
print(L1)
#['Apple', 'banana', 'cherry']
key=str.lower 的作用是将每个元素转换成小写,然后按照转换后的结果进行排序。
(3)逆序
lst1 = [1, 2, 3, 4]
L1 = sorted(lst1, key=lambda x: -x)
print(L1)
#[4, 3, 2, 1]
lst1 = [2, -1, 0, 1, 6, 4]
L1 = sorted(lst1, key=lambda x:x*-1)
print(L1)
#[6, 4, 2, 1, 0, -1]
(4)按照二维矩阵下标相应的列进行排序
lst1 = [[200,35,168],[300,38,166],[237,39,167]]
L1 = sorted(lst1,key = lambda x:x[0])
print(L1)
#[[200, 35, 168], [237, 39, 167], [300, 38, 166]]
(5)对列表内字典的某一key进行排序
以 grade 的降序进行排序
a1 = [{"name": 'x', "grade": 78}, {"name": 'y', "grade": 99}, {"name": 'z', "grade": 69}]
a_1 = sorted(a1, key=lambda x:x["grade"], reverse=True)
#等价a_1 = sorted(a1, key=lambda x:-x["age"])
print(a_1)
#[{'name': 'y', 'grade': 99}, {'name': 'x', 'grade': 78}, {'name': 'z', 'grade': 69}]