sort()和sorted()究竟有何本质区别?
摘要:在 Python 中,sort() 和 sorted() 都是用来对序列进行排序的方法,但它们之间有几个核心的区别: 1. sort() 方法 是列表(List)的方法:&
在 Python 中,sort() 和 sorted() 都是用来对序列进行排序的方法,但它们之间有几个核心的区别:
1.sort()方法
是列表(List)的方法:sort()只能用于列表对象,它不是一个通用的函数。
原地排序(In-place sorting):sort()方法会直接修改原始列表,对其进行排序,而不会创建新的列表。
没有返回值:sort()方法的返回值为None。如果尝试获取其返回值,你将得到None,这在链式操作中可能会导致问题。
效率:由于是原地修改,通常在内存使用上更高效,因为它不需要额外的空间来存储排序后的副本。
示例:
my_list = [3, 1, 4, 1, 5, 9, 2, 6]
print(f"原始列表: {my_list}")
return_value = my_list.sort() # 对列表进行原地排序
print(f"排序后的列表: {my_list}") # 列表已经被修改
print(f"sort() 的返回值: {return_value}") # None
输出:
原始列表: [3, 1, 4, 1, 5, 9, 2, 6]
排序后的列表: [1, 1, 2, 3, 4, 5, 6, 9]
sort() 的返回值: None
2.sorted()函数
是内置函数(Built-in function):sorted()是 Python 内置的一个通用函数,可以对任何可迭代对象进行排序(例如列表、元组、字符串、集合、字典的键等)。
返回一个新列表:sorted()函数会创建一个新的列表,其中包含排序后的元素,而不会修改原始可迭代对象。
有返回值:sorted()函数的返回值为一个新创建的排序后的列表。
通用性:由于它不修改原对象,因此适用于那些需要保持原始数据不变的场景,或者对不可变对象(如元组、字符串)进行排序的场景。
