python 列表的sort和sorted区别

“`html

python 列表的sort和sorted区别




<span class="wpcom_tag_link"><a href="https://www.wanglitou.cn/tag/python" title="Python" target="_blank">Python</a></span> 列表的 sort 和 sorted 区别

Python 列表的 sort 和 sorted 区别

Python 提供了两种对列表进行排序的方法:sort() 和 sorted()。虽然这两个方法都用于对列表中的元素进行排序,但它们在以下几个方面有所不同:

1. 原地修改与返回新列表

sort() 方法对原有的列表进行原地修改,而 sorted() 方法返回一个新的已排序列表,而不修改原有的列表。

例如:

“`python
mylist = [3, 1, 4, 6, 2]
my
list.sort() #原地修改
print(my_list) # 输出:[1, 2, 3, 4, 6]

sortedlist = sorted(mylist) # 返回新列表
print(sortedlist) # 输出:[1, 2, 3, 4, 6]
print(my
list) # 输出:[3, 1, 4, 6, 2] # 原列表未修改
“`

2. 时间复杂度

sort() 方法的时间复杂度为 O(n log n),其中 n 为列表的长度。这是因为 sort() 方法使用了归并排序算法,该算法具有较高的时间复杂度。

sorted() 方法的时间复杂度为 O(n log n),但它还包括创建新列表的时间,因此其总体时间复杂度通常比 sort() 方法稍慢。

3. 稳定性

稳定性是指当两个元素相等时,它们在排序后的列表中的相对顺序保持不变。sort() 方法是不稳定的,这意味着相等元素的顺序在排序后可能发生改变。

sorted() 方法是稳定的,这意味着相等元素在排序后的列表中保持原始顺序。

例如:

“`python
mylist = [(1, ‘A’), (1, ‘B’), (2, ‘C’)]
my
list.sort() # 不稳定,相等元素的顺序发生了改变
print(my_list) # 输出:[(1, ‘A’), (2, ‘C’), (1, ‘B’)]

sortedlist = sorted(mylist) # 稳定,相等元素的顺序保持不变
print(sorted_list) # 输出:[(1, ‘A’), (1, ‘B’), (2, ‘C’)]
“`

4. 关键字参数

sorted() 方法提供了一些额外的关键字参数,可以自定义排序行为。这些参数包括:

  • key: 用于指定排序时使用的键函数。
  • reverse: 用于指定是否按降序排序。

何时使用 sort() 和 sorted()

在以下情况下使用 sort() 方法:

  • 当需要原地修改列表时。
  • 当性能是关键因素时(例如,对大型列表进行排序)。
  • 当稳定性不是必需时。

在以下情况下使用 sorted() 方法:

  • 当需要创建新列表时。
  • 当稳定性是必需时。
  • 当需要自定义排序行为时(例如,使用 key 参数)。

问答

  1. sort() 和 sorted() 的主要区别是什么?
  2. sort() 和 sorted() 的时间复杂度分别为多少?
  3. sorted() 是稳定的还是不稳定的?
  4. 给出使用 sorted() 方法按降序对列表进行排序的示例代码。
  5. 什么时候应该使用 sort() 而不是 sorted()?

结论

sort() 和 sorted() 都是 Python 中对列表进行排序的有效方法。通过理解它们的差异,你可以根据自己的特定需求选择最合适的排序方法。



“`

原创文章,作者:王利头,如若转载,请注明出处:https://www.wanglitou.cn/article_11437.html

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2024-03-28 18:20
下一篇 2024-03-28 18:28

相关推荐

公众号