陷阱36:不要使用list.sort
方法来对列表进行排序。
- 列表是Python中最常用的数据结构之一,它可以存储任意类型的元素,并且可以动态地增加或删除元素。
- 有时候,我们需要对列表中的元素进行排序,比如根据元素的值或类型或顺序来分析或修改列表,就需要使用
list.sort
方法或sorted
函数或sort
模块或lambda
表达式来对列表进行排序。
- 但是,如果我们使用
list.sort
方法来对列表进行排序,就可能导致一些意想不到的结果,甚至引发错误。
错误的代码
# 定义一个列表,它的元素都是字符串
lst = ["apple", "banana", "cherry", "date", "elderberry"]
# 使用list.sort方法来对列表进行升序排序,期望得到一个新的列表,包含排序后的元素
lst2 = lst.sort()
print(lst2) # None
为什么会出错呢?
- 因为使用
list.sort
方法来对列表进行排序,会直接修改原列表,而不是返回一个新的列表,这就意味着,如果我们想要得到一个新的列表,就需要先复制原列表,然后再用list.sort
方法来排序它,这就会增加代码的复杂度和冗余性,降低代码的可读性和效率。
- 如果我们使用
list.sort
方法来对列表进行排序,就会导致原列表的顺序被改变,