number = [3, 4, 1, 2, 5]
number.sort() # 升序排序,注意无返回值
print(number) # [1, 2, 3, 4, 5]
number.sort(reverse=True) # 反转,降序排序
print(number) # [5, 4, 3, 2, 1]
words = ['abc', 'Df', 'mnop', 'Pyzxe']
words.sort(key=str.lower) # 按首字母排序,需要全部转为小写
print(words) # ['abc', 'Df', 'mnop', 'Pyzxe']
words.sort(key=len) # 按字符串长度排序
print(words) # ['Df', 'abc', 'mnop', 'Pyzxe']
marks1 = ['B001', 'C003', 'D005', 'B002', 'C004']
marks1.sort()
print(marks1) # ['B001', 'B002', 'C003', 'C004', 'D005']
marks2 = ['b1', 'c3', 'b12', 'b2', 'c11']
marks2.sort() # 并不能实现先按字母再按数字的正确排序
print(marks2) # ['b1', 'b12', 'b2', 'c11', 'c3']
# 自定义 key 函数
def custom_sort(item):
# 提取字母部分和数字部分
letter_part = ''.join(filter(str.isalpha, item))
number_part = ''.join(filter(str.isdigit, item))
return letter_part, int(number_part)
sorted_marks2 = sorted(marks2, key=custom_sort) # 先按字母,再按数字排序
print(sorted_marks2) # ['b1', 'b2', 'b12', 'c3', 'c11']
class Point:
def __init__(self, X, Y, Z):
self.X = X
self.Y = Y
self.Z = Z
# def __str__(self):
# return f"Point({self.X},{self.Y},{self.Z})"
def __repr__(self):
return f"Point({self.X},{self.Y},{self.Z})"
p1 = Point(1, 2, 3)
p2 = Point(3, 1, 4)
p3 = Point(2, 3, 2)
p4 = Point(2, 1, 5)
p5 = Point(3, 1, 2)
points = [p1, p2, p3, p4, p5]
sorted_points = sorted(points, key=lambda point: (point.X, -point.Y, point.Z)) # X升序,Y降序,Z升序排列
print(sorted_points) # [Point(1,2,3), Point(2,3,2), Point(2,1,5), Point(3,1,2), Point(3,1,4)]
11-24
8425
05-18
2468
07-24
628
09-26
1119