Python中sort()
和sorted()
的核心区别在于:前者直接修改原列表且仅适用于列表,后者返回新列表且支持所有可迭代对象。 两者均支持key
和reverse
参数实现灵活排序,但选择取决于是否需要保留原数据。
-
sort()
的原地排序特性
sort()
是列表的成员方法,调用后会直接改变原列表顺序,无返回值。例如:python复制
numbers = [3, 1, 4] numbers.sort() # 原列表变为[1, 3, 4]
适用于无需保留原列表的场景,节省内存。
-
sorted()
的通用性与安全性
sorted()
是内置函数,接受任何可迭代对象(如元组、字符串),返回新列表且不影响原数据:python复制
words = ("banana", "apple") sorted_words = sorted(words) # 返回新列表["apple", "banana"]
适合需保留原数据或多类型排序的场景。
-
高级排序:
key
与reverse
参数
两者均支持通过key
指定排序规则(如字符串长度、元组特定元素),reverse
控制升降序:python复制
data = [(1, "b"), (2, "a")] data.sort(key=lambda x: x[1]) # 按元组第二项排序
复杂数据排序时,
key
函数能精准定义比较逻辑。 -
性能与场景选择
-
sort()
:优先用于大型列表,避免内存冗余。 -
sorted()
:需保留原数据或处理非列表时必备,灵活性更高。
-
合理选择二者能提升代码效率和可读性,尤其在处理复合数据结构时,key
参数的巧妙运用可大幅简化逻辑。