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

Python中内置sorted()函数的使用及注意事项

发布时间:2023-06-05 11:52:11

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中一个非常有用的内置函数,可以方便地对序列进行排序。使用它时,请记得注意上述注意事项,以确保程序的正确性。