欢迎访问宙启技术站
智能推送

使用Python中的sorted函数进行列表排序和对象排序

发布时间:2023-08-02 02:58:07

在Python中,我们可以使用sorted()函数来对列表进行排序。sorted()函数可以接受一个可迭代对象作为参数,并返回一个新的已排序的列表。排序时,sorted()函数会默认按照升序排序。

示例一:对简单列表进行升序排序

numbers = [5, 2, 8, 1, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出:[1, 2, 5, 6, 8]

示例二:对字符串列表进行升序排序

names = ['Alice', 'Bob', 'Charlie', 'Dan']
sorted_names = sorted(names)
print(sorted_names)  # 输出:['Alice', 'Bob', 'Charlie', 'Dan']

在上述示例中,我们传递了一个列表作为sorted()函数的参数,并将返回的已排序列表赋值给一个新的变量。然后,我们打印新的已排序列表。注意,sorted()函数不会改变原始列表。

我们还可以使用reverse=True参数来进行降序排序。

示例三:对列表进行降序排序

numbers = [5, 2, 8, 1, 6]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)  # 输出:[8, 6, 5, 2, 1]

除了可以对简单数据类型的列表进行排序外,我们还可以使用sorted()函数对对象进行排序。在这种情况下,我们需要定义一个比较函数,以告诉sorted()函数如何比较对象。

示例四:对自定义对象进行排序

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})"

people = [Person('Alice', 25), Person('Bob', 30), Person('Charlie', 20)]
sorted_people = sorted(people, key=lambda p: p.age)
print(sorted_people)  # 输出:[Person(name='Charlie', age=20), Person(name='Alice', age=25), Person(name='Bob', age=30)]

在上面的示例中,我们定义了一个名为Person的类,并创建了三个Person对象。我们传递了一个比较函数key=lambda p: p.agesorted()函数,该函数告诉sorted()函数按照Person对象的age属性来排序列表。

需要注意的是,我们还可以通过传递一个cmp函数来自定义排序规则。在Python 2中,可以使用cmp_to_key函数来将cmp函数转换成key函数。

综上所述,使用Python中的sorted()函数,我们可以方便地对列表进行排序,无论是简单的数据类型还是自定义的对象。只要我们定义好比较函数,sorted()函数就可以按照我们的要求来排序。