实现思路
- 使用Python内置的
sorted
函数或者列表的sort
方法进行排序。
- 利用
key
参数指定根据对象的哪个属性进行排序。这两个方法在实现上都使用了高效的排序算法(如Timsort),适合大规模数据排序。
关键代码片段
class CustomObject:
def __init__(self, attr1, attr2):
self.attr1 = attr1
self.attr2 = attr2
custom_list = [CustomObject(3, 'b'), CustomObject(1, 'a'), CustomObject(2, 'c')]
# 使用sorted函数
sorted_list = sorted(custom_list, key=lambda obj: obj.attr1)
# 或者使用列表的sort方法
custom_list.sort(key=lambda obj: obj.attr1)
避免性能瓶颈
- 避免在
key
函数中进行复杂计算:key
函数应该尽量简单,仅返回用于比较的属性值。因为key
函数会在每次比较时被调用,如果其中包含复杂计算,会显著增加排序的时间复杂度。
- 数据类型一致性:确保用于排序的属性数据类型一致。如果属性数据类型不一致,Python在比较时可能需要进行额外的类型转换操作,从而降低性能。例如,避免在同一列表中同时存在数字和字符串类型的待排序属性。
- 选择合适的排序方法:对于大规模数据,Python内置的
sorted
和list.sort
使用的Timsort算法已经经过优化,性能较好。尽量避免自行实现复杂度较高的排序算法,除非有特殊需求。