Python中列表排序函数详解
Python中提供了多种方法对列表进行排序。本文将对Python中的列表排序函数进行详细介绍,帮助读者对Python中的列表排序有更深入的了解。
1、list.sort()函数
list.sort()函数是Python中对列表排序最常用的函数之一,可以对列表进行升序排序,也可以对列表进行降序排序。该函数直接对原列表进行排序,不会返回一个新的排序后的列表。
1.1升序排序
list.sort()函数默认是升序排序,排序后的列表将从小到大排列。
例如:
a = [3,2,1,5,4] a.sort() print(a)
输出结果:
[1, 2, 3, 4, 5]
1.2降序排序
如果需要进行降序排序,只需要在sort()函数中传递reverse=True参数即可。
例如:
a = [3,2,1,5,4] a.sort(reverse=True) print(a)
输出结果:
[5, 4, 3, 2, 1]
2、sorted()函数
sorted()函数可以返回一个新的排序后的列表,不会修改原来的列表。sorted()函数可以对列表进行升序排序,也可以进行降序排序。
2.1升序排序
对于升序排序,只需直接调用函数sorted()即可。
例如:
a = [3,2,1,5,4] b = sorted(a) print(b) print(a)
输出结果:
[1, 2, 3, 4, 5] [3, 2, 1, 5, 4]
2.2降序排序
如果需要进行降序排序,只需要传递reverse=True参数即可。
例如:
a = [3,2,1,5,4] b = sorted(a, reverse=True) print(b) print(a)
输出结果:
[5, 4, 3, 2, 1] [3, 2, 1, 5, 4]
3、sort与sorted函数中的key参数
3.1使用sort函数进行自定义排序
以上两个函数都可以使用key参数来指定一个函数,用来指定排序依据。如果没有指定,sort函数将默认按照列表元素的大小进行排序。
例如:
a = ['abc', 'bc', 'a', 'abcd'] a.sort() print(a)
输出结果:
['a', 'abc', 'abcd', 'bc']
可以看到,sort函数将按照字符串大小进行排序,这并不是我们想要的结果。
一个常见的解决方法是给sort函数传递一个函数作为它的key参数。这个函数将针对列表中每个元素进行一遍计算,并返回需要排序的标准,sort函数根据这些标准进行排序。比如我们可以按字符串长度进行排序:
a = ['abc', 'bc', 'a', 'abcd'] a.sort(key=lambda x: len(x)) print(a)
输出结果:
['a', 'bc', 'abc', 'abcd']
3.2使用sorted函数进行自定义排序
sorted函数同样可以使用key参数来指定一个函数来作为它的排序标准,与sort()函数不同的是,sorted函数将返回一个新的排序后的列表。
例如:
a = ['abc', 'bc', 'a', 'abcd'] b = sorted(a, key=lambda x: len(x)) print(b) print(a)
输出结果:
['a', 'bc', 'abc', 'abcd'] ['abc', 'bc', 'a', 'abcd']
可以看到,sorted函数返回一个新的排序后的列表,原来的列表并没有被修改。
4、小结
Python中的列表排序函数包括sort和sorted函数,两个函数都可以对列表进行排序。sort函数是直接对列表进行排序,不会返回一个新的排序后的列表。sorted函数会返回一个新的排序后的列表,原列表不会被修改。使用key参数可以进行自定义排序,根据指定的函数进行排序。熟练掌握列表排序函数可以让我们更轻松地处理列表中的数据。
