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

Python中的sorted函数和sort函数:什么是区别

发布时间:2023-10-18 10:40:24

在Python中,sorted函数和sort方法都用于对数据进行排序,但是它们有一些区别。

1. sorted函数是一个全局函数,可以对iterable对象进行排序,返回一个新的已排序的列表。原始的iterable对象保持不变。而sort方法是列表对象的方法,只能对列表进行排序,没有返回值,会直接修改原始列表。

2. sorted函数可以用于任何可迭代对象,如列表、元组、字符串等,而sort方法只能用于列表。

3. sorted函数的语法是sorted(iterable, key=None, reverse=False),其中iterable是待排序的可迭代对象,key是一个用于确定排序顺序的函数,可选参数,reverse是一个布尔值,用于指定排序顺序。而sort方法的语法是list.sort(key=None, reverse=False),其中key和reverse参数的含义与sorted函数相同。

4. sorted函数使用的是稳定的排序算法(Timsort),而sort方法使用的是不稳定的原地排序算法(双轴快速排序)。

5. sorted函数返回的是一个新列表,不会修改原始的iterable对象,而sort方法会直接修改原始列表。

下面是一些示例来说明sorted函数和sort方法的不同:

# 示例1: sorted函数
numbers = [5, 3, 8, 2, 1]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # 输出: [1, 2, 3, 5, 8]
print(numbers)  # 输出: [5, 3, 8, 2, 1] 原始列表不变

# 示例2: sort方法
numbers = [5, 3, 8, 2, 1]
numbers.sort()
print(numbers)  # 输出: [1, 2, 3, 5, 8] 原始列表被修改

# 示例3: sorted函数使用key参数
fruits = ['apple', 'grapefruit', 'banana', 'kiwi']
sorted_fruits = sorted(fruits, key=len)  # 根据字符串长度排序
print(sorted_fruits)  # 输出: ['kiwi', 'apple', 'banana', 'grapefruit']

# 示例4: sort方法使用key参数
fruits = ['apple', 'grapefruit', 'banana', 'kiwi']
fruits.sort(key=len)
print(fruits)  # 输出: ['kiwi', 'apple', 'banana', 'grapefruit']

综上所述,sorted函数和sort方法都可以用于排序,但是sorted函数返回一个新的已排序列表,而sort方法直接修改原始列表。你可以根据具体的需求选择使用哪个方法。