Python list.sort() 方法详解:参数、示例与注意事项
本文详细介绍 Python 中 list.sort() 方法的具体使用。涵盖基础语法、key 参数指定权值排序、reverse 参数控制升降序,以及原地修改列表、类型一致性检查等关键注意事项。通过代码示例展示数字、字符串及混合类型的排序行为,帮助开发者准确掌握列表排序技巧。
描述
list.sort() 是 Python 内置的列表方法,用于对当前列表进行原地排序。该方法执行后不返回任何值(即返回 None)。
语法
list.sort(key=function, reverse=boolean)
| 名称 | 说明 | 备注 |
| list | 列表名称 | |
| key=function | 列表元素权值参数 | 可省略的参数。省略时列表排序不考虑元素的权值 |
| reverse=boolean | 排序规则参数 | 可省略的参数。省略时reverse默认值False |
返回值:该函数直接在原列表上进行排序操作,不返回新的列表对象。
使用示例
1. 所有参数都省略
当调用 sort 函数且省略所有参数时,默认对原列表进行升序排序:
1. 若列表元素为数字,则按数值大小进行排序;
2. 若列表元素为字符串,则按字母表顺序(字典序)进行排列。
>>> _list_a = [1, 34, 21, 4]
>>> _list_a.sort() #对元素是数字的列表进行排序
>>> _list_a
[1, 4, 21, 34]
>>> _list_b = ['Huawei', 'Chinasoft', 'CASC', 'Alibaba', 'SoftStone', 'Tencent']
>>> _list_b.sort() #对元素是字符串的列表进行排序
>>> _list_b
['Alibaba', 'CASC', 'Chinasoft', 'Huawei', 'SoftStone', 'Tencent']
2. 指定 key 参数
key 参数用于为列表中的每个元素指定一个排序依据(权值)。其值为一个函数名,该函数返回的值将作为排序的基准。
例如,若需按字符串长度对字符串列表进行排序,可将 len 函数作为 key 参数传入:
以下示例展示了分别不指定权值和指定权值对两个相同列表进行排序的结果。
>>> _list_c = ['Beijing', 'Xi\'an', 'Taiyuan', 'Taipei', 'Hongkang']
>>> _list_d = ['Beijing', 'Xi\'an', 'Taiyuan', 'Taipei', 'Hongkang']
>>> _list_c.sort() #不指定权值
>>> _list_d.sort(key=len) #指定权值
>>> _list_c
['Beijing', 'Hongkang', 'Taipei', 'Taiyuan', "Xi'an"]
>>> _list_d
["Xi'an", 'Taipei', 'Beijing', 'Taiyuan', 'Hongkang'] #按照元素的长度作为权值的排序结果
可以看出,_list_d 是按照元素长度进行排序的,而非按字母表顺序。
3. 指定 reverse 参数
reverse 参数用于控制排序顺序。当省略 reverse 参数或 reverse=False 时,列表按升序排列;当 reverse=True 时,列表按降序排列:
>>> _list_a = [13, 45, 23, 66]
>>> _list_b = [13, 45, 23, 66]
>>> _list_a.sort() #默认升序排序
>>> _list_b.sort(reverse=True) #降序排序
>>> _list_a
[13, 23, 45, 66]
>>> _list_b
[66, 45, 23, 13]
提示:当同时指定 key 和 reverse 参数时,sort 函数会先根据 key 指定的权值进行排序,再根据 reverse 参数确定是升序(False)还是降序(True)。
注意事项
1. sort 函数会改变原列表顺序
使用 sort 函数时需注意,该操作会直接修改原列表的顺序,而不是创建副本后排序并返回副本。
>>> _list_a = [1, 34, 21, 4]
>>> _list_a.sort()
>>> _list_a
[1, 4, 21, 34]
从上述代码可以看出,_list_a 本身的顺序在调用 sort 后已发生变化。
2. 列表元素类型不一致
当列表中所有元素属于同一类型时,sort() 函数能正常工作。在某些情况下,即使类型不同(如整型和浮点型),只要它们之间支持自动类型转换,排序也能正常进行:
>>> list_a = [23, 21.2, 22, -67.6]
>>> list_a.sort()
>>> list_a
[-67.6, 21.2, 22, 23]
然而,当元素类型之间无法互相转换时(例如整数与字符串混合),Python 会抛出错误,例如:
>>> a_list = [1, 3, '5', 2]
>>> a_list.sort()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'str' and 'int'
3. Python 早些版本
在 Python 2 中,sort 函数还包含一个 cmp 参数。
cmp -- 可选参数,如果指定了该参数,将使用该参数指定的方法进行排序。
到此这篇关于 Python list sort 方法的具体使用的文章就介绍到这了,更多相关 Python list sort 内容请搜索本站以前的文章或继续浏览下面的相关文章,希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









