list泛型自定义排序示例


在Python中,对于列表(list)中的泛型元素进行自定义排序,通常会使用`sorted()`函数或列表的`sort()`方法,并结合`key`参数来指定一个排序依据的函数。这里提供一个简单的示例,说明如何对一个包含自定义对象的列表进行排序。

假设我们有一个`Person`类,它有两个属性:`name`和`age`,我们希望根据`age`属性对一个`Person`对象的列表进行排序。


class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __repr__(self):
        return f"Person(name={self.name}, age={self.age})"

# 创建Person对象列表
people = [Person("Alice", 30), Person("Bob", 25), Person("Charlie", 35)]

# 使用sorted()函数进行排序,根据Person对象的age属性
sorted_people = sorted(people, key=lambda person: person.age)

# 打印排序后的列表
for person in sorted_people:
    print(person)

# 或者,如果你想要就地排序(不创建新列表),可以使用sort()方法
people.sort(key=lambda person: person.age)

# 再次打印排序后的people列表
for person in people:
    print(person)

在这个例子中,`sorted()`函数和`sort()`方法都接受了一个`key`参数,它是一个函数,用于从列表中的每个元素(这里是`Person`对象)中提取一个用于比较的值(这里是`age`属性)。`lambda`函数是定义这个`key`参数的简洁方式。

注意,`sorted()`函数返回一个新的列表,而`sort()`方法会就地修改原列表。