使用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.age给sorted()函数,该函数告诉sorted()函数按照Person对象的age属性来排序列表。
需要注意的是,我们还可以通过传递一个cmp函数来自定义排序规则。在Python 2中,可以使用cmp_to_key函数来将cmp函数转换成key函数。
综上所述,使用Python中的sorted()函数,我们可以方便地对列表进行排序,无论是简单的数据类型还是自定义的对象。只要我们定义好比较函数,sorted()函数就可以按照我们的要求来排序。
