如何使用Python中的sorted函数对列表进行排序?
在Python中,可以使用内置的sorted函数对列表进行排序。 对于列表中的元素,排序是按照它们的值来完成的。
sorted函数有两个基本参数:iterable和key。 iterable是要排序的列表,key是用来比较排序项的函数。 如果key函数没有指定,那么sorted函数会按照默认的方式对元素进行比较排序。
sorted函数的语法如下:
sorted(iterable, key=None, reverse=False)
其中iterable是要排序的列表或可迭代对象,key是用来比较排序项的函数(可选),reverse是一个布尔标志,用于指定排序顺序(可选,默认为False)。
下面是一些使用sorted函数对列表排序的示例:
示例1:按照默认方式对列表进行排序
list1 = [3, 5, 1, 9, 2]
sorted_list1 = sorted(list1) # [1, 2, 3, 5, 9]
在此示例中,没有使用关键字参数key或reverse。 因此,sorted函数将默认升序排序给定列表中的元素。
示例2:按照降序方式对列表进行排序
list2 = [8, 3, 6, 2, 7]
sorted_list2 = sorted(list2, reverse=True) # [8, 7, 6, 3, 2]
在此示例中,使用了关键字参数reverse。 因此,sorted函数将降序排序给定列表中的元素。
示例3:按照(lambda表达式)对列表进行排序
list3 = [('banana', 2), ('apple', 5), ('pear', 1)]
sorted_list3 = sorted(list3, key=lambda x: x[1]) # [('pear', 1), ('banana', 2), ('apple', 5)]
在此示例中,使用了lambda表达式作为关键字参数key。 lambda函数x: x[1]返回给定元组x的第二个元素(即:(‘banana’, 2)的2)。 由于sorted函数对列表中的元素进行比较排序,因此将通过指定的lambda函数对列表中的元组进行按元素排序。
示例4:按对象属性来排序
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __repr__(self):
return repr((self.name, self.age))
people = [Person('Alice', 25), Person('Bob', 20), Person('Charlie', 30)]
sorted_people = sorted(people, key=lambda x: x.age) # [('Bob', 20), ('Alice', 25), ('Charlie', 30)]
在此示例中,定义了一个名为Person的类,该类包含两个属性:name和age。 然后,使用这个类实例化了一个名为people的列表。 最后,使用sorted函数和lambda表达式key对人员列表进行排序(按年龄升序排列)。
总结
sorted函数是Python内置的一个简单但很强大的函数,可用于对Python中的所有可迭代对象(如元组,列表和集合)进行排序。排序可以按默认方式进行,也可以使用关键函数进行排序。此外,sorted(和其他Python内置函数)提供了lambda表达式,可以轻松定义关键函数。
