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

Python中的sorted()函数:如何按特定方式排序?

发布时间:2023-07-01 15:41:45

sorted()函数是Python内置函数之一,用于对可迭代对象进行排序。它接受一个可选的关键字参数,用于指定排序方式。

sorted()函数默认按照元素的大小进行升序排序。例如:

numbers = [4, 2, 7, 1, 9]
sorted_numbers = sorted(numbers)
print(sorted_numbers)

输出结果为:[1, 2, 4, 7, 9]

如果想要按照元素的大小进行降序排序,可以使用reverse参数:

numbers = [4, 2, 7, 1, 9]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)

输出结果为:[9, 7, 4, 2, 1]

除了使用reverse参数,还可以使用key参数来指定排序方式。key参数接受一个函数,该函数将应用于每个元素并返回一个排序依据。

例如,如果想要按照元素的绝对值大小进行排序,可以使用abs()函数作为key参数:

numbers = [-4, 2, -7, 1, -9]
sorted_numbers = sorted(numbers, key=abs)
print(sorted_numbers)

输出结果为:[1, 2, -4, -7, -9]

在这个例子中,abs()函数计算每个元素的绝对值,并将绝对值作为排序依据。

另外一个常见的用法是按照某个属性进行排序。例如,如果有一个包含学生对象的列表,每个学生对象都有一个age属性,可以使用lambda表达式作为key参数来按照age属性进行排序:

class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age

students = [Student('Alice', 25), Student('Bob', 18), Student('Charlie', 35)]
sorted_students = sorted(students, key=lambda student: student.age)
for student in sorted_students:
    print(student.name, student.age)

输出结果为:

Bob 18
Alice 25
Charlie 35

在这个例子中,lambda表达式lambda student: student.age将每个学生对象映射到它们的age属性,并将age作为排序依据。

除了升序和降序排序外,还可以创建自定义的排序函数,并使用该函数作为key参数。例如,如果想要按照字符串的长度进行排序,可以编写一个比较函数来对字符串进行排序:

def compare_length(string):
    return len(string)

strings = ['apple', 'banana', 'cherry']
sorted_strings = sorted(strings, key=compare_length)
print(sorted_strings)

输出结果为:['apple', 'cherry', 'banana']

在这个例子中,compare_length函数返回每个字符串的长度,并将长度作为排序依据。

总结来说,如果想要按照特定方式排序,可以使用sorted()函数的key参数来指定排序方式。key参数接受一个函数或lambda表达式,该函数将应用于每个元素并返回一个排序依据。通过灵活应用key参数,可以实现非常复杂的排序方式。