python 排序
arr.sort() 和 sorted(arr)
前者改变原列表;后者不改变,而是直接生成一个排好序的新列表。
复杂列表排序:利用 \(sorted()\) 中的 \(key\) 即可。
格式:\(sorted(arr, key=..., reverse=...)\)
# 将字符串按照长度升序排序
arr = ["Alice", "Bob", "CCCCCC"]
arr = sorted(arr, key = len)
print(arr) # ['Bob', 'Alice', 'CCCCCC']
\(key\) 中的内容经常会使用 \(lambda\) 函数,即:\(sorted(arr, key=lambda\space x:..., reverse=...)\)
# 将字符串按照长度升序排序
arr = ["Alice", "Bob", "CCCCCC"]
arr = sorted(arr, key=lambda x:len(x))
print(arr) # ['Bob', 'Alice', 'CCCCCC']
# 按照元组的某一维升序排序
arr = [(4, 2), (1, 3), (2, 1)]
arr = sorted(arr, key=lambda x:x[1])
print(arr) # [(2, 1), (4, 2), (1, 3)]
"""优先按照维度a降序排序,其次按照维度b升序排序 -> 将返回值设定为元组,利用元组的内置排序即可"""
arr = [("Alice", 16, 110), ("Bob", 20, 130), ("Cindy", 18, 120), ("David", 16, 120)]
arr = sorted(arr, key=lambda x:(-x[2], x[1]))
print(arr) """[('Bob', 20, 130), ('David', 16, 120), ('Cindy', 18, 120), ('Alice', 16, 110)]"""

浙公网安备 33010602011771号