欢迎访问宙启技术站
智能推送

Python中的sorted函数与sort函数的区别是什么?

发布时间:2023-08-12 15:01:41

在Python中,sorted()函数和sort()方法都可以用于对列表进行排序。但它们之间有一些关键的区别。

1. sorted()函数是一个内置函数,可以用于任何可迭代对象,例如列表、元组、字符串以及其它的可迭代对象。它不修改原始对象,而是返回一个新的已排序的列表。

示例:

   x = [3, 1, 4, 2]
   y = sorted(x)
   print(x)  # [3, 1, 4, 2]
   print(y)  # [1, 2, 3, 4]
   

2. sort()方法是列表对象的一个方法,只能用于列表,并且直接修改了原始的列表,而不返回一个新的对象。

示例:

   x = [3, 1, 4, 2]
   x.sort()
   print(x)  # [1, 2, 3, 4]
   

3. sorted()函数可以接受一个可选的参数key,该参数用于指定排序时使用的键,即每个元素的某个属性或函数结果。例如,可以使用lambda函数指定按照元素的长度进行排序。

示例:

   x = ['apple', 'banana', 'cherry', 'pear']
   y = sorted(x, key=lambda e: len(e))
   print(y)  # ['pear', 'apple', 'banana', 'cherry']
   

4. sort()方法也可以接受一个key参数,用法和sorted()函数类似。但sort()方法直接修改原始列表,而sorted()函数创建一个新列表。

示例:

   x = ['apple', 'banana', 'cherry', 'pear']
   x.sort(key=lambda e: len(e))
   print(x)  # ['pear', 'apple', 'banana', 'cherry']
   

5. sorted()函数还可以接受一个可选的参数reverse,该参数用于指定是否进行降序排序。如果设置为True,则按照降序排序。

示例:

   x = [3, 1, 4, 2]
   y = sorted(x, reverse=True)
   print(y)  # [4, 3, 2, 1]
   

6. sort()方法也可以接受一个reverse参数,用法和sorted()函数类似。但sort()方法直接修改原始列表,而sorted()函数创建一个新列表。

示例:

   x = [3, 1, 4, 2]
   x.sort(reverse=True)
   print(x)  # [4, 3, 2, 1]
   

在性能方面,sort()方法通常比sorted()函数更快,因为sort()方法直接修改原始列表,而不涉及创建新列表的开销。因此,如果只需要对列表进行排序而不关心原始顺序,sort()方法是更好的选择。如果需要保留原始列表,并且需要一个新的已排序的列表,则应使用sorted()函数。