Python中内置sorted()函数的使用及注意事项
Python中的sorted()函数是一种非常方便的工具,可以对序列进行排序,同时它也有一些非常有用的参数,可以让我们控制排序的行为。本文将为您详细介绍sorted()函数的使用及注意事项。
1. sorted()函数的使用
sorted()函数是一个内置函数,用于对序列进行排序。例如,要对一个列表进行排序,可以使用以下代码:
list1 = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_list = sorted(list1) print(sorted_list)
这将打印出一个有序的列表,例如:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
在这里,我们将列表list1传递给sorted()函数,并将返回的有序列表分配给sorted_list变量。
2. sorted()函数的参数
sorted()函数有许多有用的参数,可以控制排序的行为。以下是一些最常用的参数:
① reverse:如果设置为True,则按相反的顺序排序。默认情况下,它是False。
例如,要按相反的顺序对一个列表进行排序,可以使用以下代码:
list1 = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_list = sorted(list1, reverse=True) print(sorted_list)
这将打印一个相反的列表,即:
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
② key:用于排序的函数。默认情况下,它为None。
例如,要按字母顺序对一个字符串列表进行排序,可以使用以下代码:
list1 = ['banana', 'apple', 'orange', 'grape'] sorted_list = sorted(list1, key=str.lower) print(sorted_list)
这将打印一个按字母顺序排序的列表,例如:
['apple', 'banana', 'grape', 'orange']
在这里,我们将str.lower作为key参数传递给sorted()函数,这意味着我们将使用小写字母进行排序。
另一个使用key参数的示例是对对象列表进行排序。假设我们有一个名为Person的类,其中包含名字和年龄属性。要按年龄对一个Person对象列表进行排序,可以使用以下代码:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
people = [Person('Alice', 25), Person('Bob', 18), Person('Charlie', 32)]
sorted_people = sorted(people, key=lambda p: p.age)
for person in sorted_people:
print(person.name, person.age)
这将按年龄对人员列表进行排序,并打印出结果:
Bob 18 Alice 25 Charlie 32
在这里,我们使用lambda函数作为key参数来提取每个Person对象的年龄属性。
3. 注意事项
在使用sorted()函数时,有几个注意事项需要记住。
① sorted()函数不会改变原始序列。如果要对原始序列进行排序,请使用sort()方法。
例如,要对列表list1进行排序并将结果分配回原始列表,可以使用以下代码:
list1 = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] list1.sort() print(list1)
这将打印一个按顺序排序的列表,即:
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
② 如果排序的序列包含不同类型的元素,则会引发TypeError异常。因此,确保序列中的所有元素都是相同类型的非常重要。
例如,如果要对一个包含整数和字符串的列表进行排序,则会引发TypeError异常:
list1 = [3, 'apple', 4, 'banana', 1, 'orange'] sorted_list = sorted(list1)
这将引发TypeError异常。
③ sorted()函数返回的结果是一个新的列表,而不是原始序列的视图。因此,请确保将其分配给新的变量,以便在进行后续操作时使用。
例如,请勿尝试在原始列表上调用sorted()方法:
list1.sort() sorted_list = list1.sorted() # 这将引发AttributeError异常
正确的方法是将结果分配给新的变量:
sorted_list = sorted(list1)
总之,sorted()函数是Python中一个非常有用的内置函数,可以方便地对序列进行排序。使用它时,请记得注意上述注意事项,以确保程序的正确性。
