python---list.sort() 和 sorted(list)的区别
一、二者使用方法
1、list.sort()
- 作用对象:是列表的方法,直接修改原列表(原地排序)。
- 返回值:返回 None(不返回新列表)。
- 语法:list.sort(key=None, reverse=False)
- 特点:
- 仅适用于列表。
- 会改变原列表的顺序。
- 由于不创建新列表,内存效率更高。
示例:
numbers = [3, 1, 4, 2]
result = numbers.sort() # 返回 None
print(numbers) # 输出: [1, 2, 3, 4](原列表被修改)
print(result) # 输出: None
2、sorted(list):
- 作用对象:是内置函数,接受任何可迭代对象(如列表、元组、字符串等),返回新列表。
- 返回值:返回排序后的新列表,原对象不变。
- 语法:sorted(iterable, key=None, reverse=False)
- 特点:
- 适用于所有可迭代对象(如元组、字典的键等)。
- 不修改原对象,而是生成新列表。
- 更灵活,但需要额外内存存储新列表。
示例:
numbers = [3, 1, 4, 2]
new_list = sorted(numbers) # 返回新列表
print(numbers) # 输出: [3, 1, 4, 2](原列表未变)
print(new_list) # 输出: [1, 2, 3, 4]# 对元组排序(返回列表)
tuple_data = (3, 1, 2)
sorted_tuple = sorted(tuple_data) # 输出: [1, 2, 3]
二、相同处
- 在 Python 中,list.sort() 和 sorted(list) 都用于对列表进行排序。
- 两者均支持 key 和 reverse 参数
# 按字符串长度排序 words = ["apple", "banana", "cherry"] words.sort(key=len) # 原地按长度排序 sorted_words = sorted(words, key=len, reverse=True) # 降序
三、区别
四、如何选择
需要保留原列表或对非列表对象排序 → 用 sorted()。
仅需排序列表且不介意修改原列表 → 用 list.sort()(更高效)。
五、示例对比
# 情况1:需要原列表不变
data = [5, 2, 8]
sorted_data = sorted(data) # 正确
# data.sort() 会修改原列表,可能不符合需求# 情况2:对字符串排序
text = "python"
sorted_text = sorted(text) # 返回列表 ['h', 'n', 'o', 'p', 't', 'y']