Python中的sorted()函数:按指定顺序对列表进行排序
Python是一种支持高级编程的高级语言。它被广泛应用于Web应用程序开发、数据分析、机器学习等领域。而对于列表排序,Python中的sorted()函数是一个非常常见的排序函数。本文将介绍Python中的sorted()函数,主要包括sorted()函数的语法和使用方法、对于不同的数据类型的排序方法、以及如何自定义排序方式。
一、sorted()函数的语法及使用方法
sorted()函数是Python中内置的一个函数,语法如下:
sorted(iterable, key=None, reverse=False)
其中,iterable是需要进行排序的列表、元组等,key是用来指定排序的关键字,reverse是确定排序顺序的参数,True为降序,False为升序,默认为False。
例如,对于一个列表进行排序:
lst = [8, 1, 6, 3, 2, 5, 4, 7]
sorted_lst = sorted(lst)
print(sorted_lst)
输出结果为:[1, 2, 3, 4, 5, 6, 7, 8]
也可以对一个元组进行排序:
tup = (8, 1, 6, 3, 2, 5, 4, 7)
sorted_tup = sorted(tup)
print(sorted_tup)
输出结果为:[1, 2, 3, 4, 5, 6, 7, 8]
二、不同数据类型的排序方法
1. 对于字符串的排序
对于字符串的排序,直接对字符串进行排序无法得到我们想要的结果,因为按照ASCII码值进行比较,而我们的排序结果不一定是按照ASCII顺序的。因此,需要先对其转化为列表进行排序。
str_lst = ["abc", "abe", "acd", "ade"]
sorted_str_lst = sorted(str_lst)
print(sorted_str_lst)
输出结果为:['abc', 'abe', 'acd', 'ade']
2. 对于元组的排序
对于元组的排序,首先需要明确的是,元组本身是不可变的,因此不能直接在原元组上进行排序,需要将其转化为列表再进行排序。同样的,可以使用sorted()函数进行排序。
元组排序时间有点短,你可以看一下卡片猜想的答案:https://www.zhihu.com/question/26747631/answer/72048228
3. 对于字典的排序
对于字典的排序,其本身是无序的,也不能进行原地排序。因此,需要将其转化为列表,再根据特定的顺序排序。例如,按照字典的键进行排序:
dic = {"b":5, "a":2, "c":1, "d":4}
sorted_dic = sorted(dic.items(), key=lambda x:x[0])
print(sorted_dic)
输出结果为:[('a', 2), ('b', 5), ('c', 1), ('d', 4)]
其中,sorted_dic返回的结果为一个列表,包含了所有的字典项,按照键的升序顺序进行排序。
三、自定义排序方式
除了按照默认的排序方式进行排序,sorted()函数也支持自定义排序方式。例如,对于一个字符串列表,按照字符串的长度进行排序:
str_lst = ["hello", "world", "python", "sorted", "function"]
sorted_str_lst = sorted(str_lst, key=lambda x:len(x))
print(sorted_str_lst)
输出结果为:['hello', 'python', 'world', 'sorted', 'function']
其中,key参数接受一个函数,这个函数会被作用于列表中的每一项,根据这个函数的返回值进行排序。
如果需要按照多个条件进行排序,可以使用元组进行排序。例如,对于一个元组列表,按照元组的 项进行升序排序,如果 项相同,则按照第二项进行降序排序:
tup_lst = [(3, 1), (2, -1), (1, 2), (3, 0), (2, 2)]
sorted_tup_lst = sorted(tup_lst, key=lambda x:(x[0], -x[1]))
print(sorted_tup_lst)
输出结果为:[(1, 2), (2, 2), (3, 0), (2, -1), (3, 1)]
其中,对于第二项进行降序排序,可以使用负数,使其按照相反的顺序排序。
总体来说,sorted()函数是Python中处理排序问题的重要函数之一。同时,按照要求进行数据的排序,也是在编程中经常会遇到的问题。因此,熟练掌握sorted()函数的使用方法及自定义排序方法,是Python编程中必不可少的技能之一。
