sort 和 sorted 的区别?

参考回答

sort()sorted() 都是 Python 中用于排序的函数,它们的作用是将一个可迭代对象进行排序,但它们有一些重要的区别。

  1. sort()
    • sort() 是列表对象的方法,用于对列表进行原地排序。
    • 它修改原始列表,返回值为 None,即不返回新的列表。
    • 只能用于列表(list)。

    示例:

    lst = [3, 1, 2]
    lst.sort()
    print(lst)  # 输出 [1, 2, 3]
    
    Python
  2. sorted()
    • sorted() 是一个内置函数,可以对任何可迭代对象(如列表、元组、字典等)进行排序。
    • 它返回一个新的列表,原始可迭代对象不受影响。
    • 可以用于任何类型的可迭代对象。

    示例:

    lst = [3, 1, 2]
    new_lst = sorted(lst)
    print(new_lst)  # 输出 [1, 2, 3]
    print(lst)       # 输出 [3, 1, 2],原列表没有改变
    
    Python

详细讲解与拓展

  1. sort() 方法:
    • 原地排序sort() 会直接修改原列表的顺序,并且返回 None,因此不需要接收返回值。
    • 效率:由于是原地排序,它的效率较高,因为不需要创建新的列表。
    • 限制sort() 只能用于列表,不能直接用于其他类型的可迭代对象(如元组、字典等)。

    示例:

    lst = [10, 2, 30, 4]
    lst.sort(reverse=True)  # 按降序排序
    print(lst)  # 输出 [30, 10, 4, 2]
    
    Python
  2. sorted() 函数:
    • 返回新列表sorted() 不会修改原始可迭代对象,而是返回一个新的列表,原对象不受影响。这使得它适合在需要保留原数据顺序的情况下使用。
    • 通用性sorted() 不仅可以用于列表,还可以用于其他类型的可迭代对象,如元组、字典等。
    • 应用场景sorted() 更为通用,适用于需要排序但不想改变原始数据结构的情况。

    示例:

    t = (3, 1, 2)  # 元组
    sorted_t = sorted(t)
    print(sorted_t)  # 输出 [1, 2, 3]
    print(t)          # 输出 (3, 1, 2),原元组没有改变
    
    Python
  3. 参数一致性:
    • sort()sorted() 都接受相同的关键字参数,如:
      • key: 一个函数,用于从每个元素中提取排序的关键字。
      • reverse: 布尔值,True 表示降序排序,False 表示升序排序(默认是升序)。

    示例:

    lst = ['apple', 'banana', 'cherry']
    lst.sort(key=len)  # 根据字符串长度排序
    print(lst)  # 输出 ['apple', 'cherry', 'banana']
    
    Python
  4. 总结:
    • sort():原地排序,直接修改列表,返回值为 None,只能用于列表。
    • sorted():返回新的列表,不修改原始数据,适用于任何可迭代对象。

通过这两个方法,可以根据需求选择是否需要修改原始数据或返回新的排序结果。

发表评论

后才能评论