常用简单排序,非算法

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)]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值