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

Python的sort函数和sorted函数的比较

发布时间:2023-06-30 09:52:19

在Python中,我们可以使用两个函数sort()sorted()来对列表进行排序。虽然它们都可以实现相同的排序功能,但它们之间有一些重要的区别,该文章将比较这两个函数。

首先,sort()函数是一个列表方法,它对给定列表进行原地排序,也就是说,它会直接修改原始列表,而不会创建任何新的列表。这意味着排序后列表的顺序发生了改变。

sorted()函数是一个内置函数,它接受一个可迭代对象作为参数,并返回一个新的已排序的列表,而不修改原始可迭代对象的顺序。因此,sorted()函数是一个不可变操作。

另一个重要的区别是它们接受的参数不同。sort()函数没有返回值,它只对原始列表进行原地排序。而sorted()函数会返回一个排序后的新列表。

# 使用sort()函数的示例
numbers = [3, 1, 4, 2, 5]
numbers.sort()
print(numbers)  # 输出:[1, 2, 3, 4, 5]

# 使用sorted()函数的示例
numbers = [3, 1, 4, 2, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出:[1, 2, 3, 4, 5]

此外,sorted()函数也可以接受其他的可选参数。

例如,我们可以使用reverse=True参数来按相反的顺序对列表进行排序。

numbers = [3, 1, 4, 2, 5]
sorted_numbers = sorted(numbers, reverse=True)
print(sorted_numbers)  # 输出:[5, 4, 3, 2, 1]

另一个常用的参数是key,它用于指定一个函数来生成排序的键。这个函数将应用于列表中的每个元素,以返回一个用于排序的键。

students = [
    {'name': 'Tom', 'age': 20},
    {'name': 'Alice', 'age': 18},
    {'name': 'Jerry', 'age': 22}
]

sorted_students = sorted(students, key=lambda x: x['age'])
print(sorted_students)
# 输出:[{'name': 'Alice', 'age': 18}, {'name': 'Tom', 'age': 20}, {'name': 'Jerry', 'age': 22}]

在这个例子中,我们使用key参数来指定一个lambda函数,该函数以每个学生字典的'age'键作为排序键。

总结来说,sort()函数用于原地对列表进行排序,而sorted()函数返回一个新的已排序的列表。此外,sorted()函数还提供了其他可选参数,可以用来控制排序的顺序和方法。根据具体的使用场景,我们可以选择适合的函数来满足要求。