sort 和 sorted 的区别?
参考回答
sort() 和 sorted() 都是 Python 中用于排序的函数,它们的作用是将一个可迭代对象进行排序,但它们有一些重要的区别。
sort():sort()是列表对象的方法,用于对列表进行原地排序。- 它修改原始列表,返回值为
None,即不返回新的列表。 - 只能用于列表(
list)。
示例:
lst = [3, 1, 2] lst.sort() print(lst) # 输出 [1, 2, 3]sorted():sorted()是一个内置函数,可以对任何可迭代对象(如列表、元组、字典等)进行排序。- 它返回一个新的列表,原始可迭代对象不受影响。
- 可以用于任何类型的可迭代对象。
示例:
lst = [3, 1, 2] new_lst = sorted(lst) print(new_lst) # 输出 [1, 2, 3] print(lst) # 输出 [3, 1, 2],原列表没有改变
详细讲解与拓展
sort()方法:- 原地排序:
sort()会直接修改原列表的顺序,并且返回None,因此不需要接收返回值。 - 效率:由于是原地排序,它的效率较高,因为不需要创建新的列表。
- 限制:
sort()只能用于列表,不能直接用于其他类型的可迭代对象(如元组、字典等)。
示例:
lst = [10, 2, 30, 4] lst.sort(reverse=True) # 按降序排序 print(lst) # 输出 [30, 10, 4, 2]- 原地排序:
sorted()函数:- 返回新列表:
sorted()不会修改原始可迭代对象,而是返回一个新的列表,原对象不受影响。这使得它适合在需要保留原数据顺序的情况下使用。 - 通用性:
sorted()不仅可以用于列表,还可以用于其他类型的可迭代对象,如元组、字典等。 - 应用场景:
sorted()更为通用,适用于需要排序但不想改变原始数据结构的情况。
示例:
t = (3, 1, 2) # 元组 sorted_t = sorted(t) print(sorted_t) # 输出 [1, 2, 3] print(t) # 输出 (3, 1, 2),原元组没有改变- 返回新列表:
- 参数一致性:
sort()和sorted()都接受相同的关键字参数,如:key: 一个函数,用于从每个元素中提取排序的关键字。reverse: 布尔值,True表示降序排序,False表示升序排序(默认是升序)。
示例:
lst = ['apple', 'banana', 'cherry'] lst.sort(key=len) # 根据字符串长度排序 print(lst) # 输出 ['apple', 'cherry', 'banana'] - 总结:
sort():原地排序,直接修改列表,返回值为None,只能用于列表。sorted():返回新的列表,不修改原始数据,适用于任何可迭代对象。
通过这两个方法,可以根据需求选择是否需要修改原始数据或返回新的排序结果。