Python中sorted函数的用法和参数详解
Python中的sorted函数是一个非常有用的函数,它可以对包含任意元素的序列进行排序,并返回一个新的排序后的序列,而不改变原始序列。此外,sorted函数也可以接受一个迭代器作为输入。下面我们来详细了解sorted函数的用法和参数。
用法
sorted函数的基本用法非常简单,通常我们可以这样使用它:
sorted(iterable, /, *, key=None, reverse=False)
其中,iterable是一个可迭代对象,比如列表、元组等。key和reverse是可选的参数。下面我们分别来介绍这些参数的含义。
参数
1. iterable
iterable是要排序的序列,可以是 list、tuple、dictionary 或字符串等其他可迭代对象。
# 对列表进行排序 lst = [3, 7, 2, 9, 1, 6] print(sorted(lst)) # 输出:[1, 2, 3, 6, 7, 9]
2. key
key起到了自定义排序规则的作用。它接受一个函数作为参数,并将该函数应用于iterable中的每个元素,然后将它们按照返回值的大小进行排序。例如,我们有一个这样的列表:
lst = ["cat", "apple", "chair", "ball"]
如果我们想按照每个元素的长度进行排序,那么可以使用key参数:
sorted(lst, key=len) # 输出:['cat', 'ball', 'apple', 'chair']
3. reverse
reverse参数用于控制排序的顺序,默认情况下是升序排序。设置为True时将按照降序进行排序。
示例:
lst = [3, 7, 2, 9, 1, 6] print(sorted(lst, reverse=True)) # 输出:[9, 7, 6, 3, 2, 1]
注意:
如果iterable中的元素是自定义的类对象,那么当我们使用sorted函数排序时,需要使用key参数来指定排序规则,否则Python会报出 TypeError 错误。我们需要实现__lt__方法来实现排序规则。例如:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __lt__(self, other):
return self.age < other.age
这里我们通过比较年龄来判断两个Person对象的大小。
p1 = Person("Tom", 20)
p2 = Person("Jerry", 18)
p3 = Person("Spike", 22)
people = [p1, p2, p3]
sorted_people = sorted(people)
for person in sorted_people:
print(person.name, person.age)
输出:
Jerry 18 Tom 20 Spike 22
在以上例子中,我们通过彼此的年龄来确定Person对象之间的顺序,然后使用sorted函数将这些Person对象排序。
总结:
Python中的sorted函数在很多场景下都非常有用。它可以对包含任意元素的序列进行排序,并返回一个新的排序后的序列,而不改变原始序列。此外,sorted函数也可以接受一个迭代器作为输入。它还有一些参数,比如key和reverse,可以用于更灵活的排序。在使用自定义类对象时,我们需要使用key参数来指定排序规则,否则Python会报出 TypeError 错误。
