pyecharts 画廊网站 : https://gallery.pyecharts.org/#/
在之前的博客 【Python】数据容器总结 ② ( 数据容器元素排序 | 字符串大小比较 | 字符大小比较 | 长短一样的字符串大小比较 | 长短不一样的字符串大小比较 ) 中 , 介绍了使用 sorted 函数 对容器中的元素进行排序 ;
sorted 函数语法如下 :
sorted(iterable, key=None, reverse=False)
sorted 函数排序 代码示例 :
"""
sorted 函数代码示例
"""
# 排序列表
lst = [3, 1, 4, 1, 5, 9, 2]
sorted_lst = sorted(lst)
print(sorted_lst) # 输出:[1, 1, 2, 3, 4, 5, 9]
# 按照元素大小逆序排序
reverse_sorted_lst = sorted(lst, reverse=True)
print(reverse_sorted_lst) # 输出:[9, 5, 4, 3, 2, 1, 1]
# 按照字符串长度排序
str_lst = ["Joe", "Trump", "Tom", "Jerry"]
sorted_str_lst = sorted(str_lst, key=len)
print(sorted_str_lst) # 输出:['Joe', 'Tom', 'Trump', 'Jerry']
执行结果 :
D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
[1, 1, 2, 3, 4, 5, 9]
[9, 5, 4, 3, 2, 1, 1]
['Joe', 'Tom', 'Trump', 'Jerry']
Process finished with exit code 0
在数据处理中 , 经常需要对 列表 进行排序 ;
如果在排序的同时 , 还要指定排序规则 , 那么 就不能使用 sorted 函数 了 , 该函数无法指定排序规则 ;
这里引入 list.sort 方法 , 可以完成对 列表 容器的排序 , 同时还可以指定排序规则 ;
list.sort 方法 会修改原始列表并返回 None ;
list.sort 函数 基本语法如下 :
list.sort(key=None, reverse=False)
key 参数 是可选参数 , 通过该关键字可指定一个排序函数 , 该函数将用于比较列表中的元素 ;
reverse 参数 也是 可选参数 , 参数类型是布尔值类型 , 指定是否按照逆序排序 ;
返回值 为 None ;
代码示例 :
"""
sort 函数代码示例
"""
lst = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
lst.sort()
print(lst) # 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
执行结果 :
D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]
Process finished with exit code 0
list.sort 函数 的 key 参数 , 需要传入一个排序函数 , 该函数的规则如下 :
下面的代码中 , 要比较的列表容器是 :
# 要排序的列表容器
lst = [["Tom", 18], ["Jerry", 12], ["Trump", 80], ["Joe", 72]]
该列表中的元素是另外一个列表 , 内层列表规则是 , 第一个元素是字符串 , 第二个元素是 数值 ;
排序的规则就是根据内层列表的第二个元素 数值类型 元素 进行排序 ;
排序函数如下 : 根据内层列表的第二个元素 数值类型 元素 进行排序 , 直接将内层列表的第二个元素返回即可 ;
def sort_key_fun(element):
"""
传入列表容器的元素, 返回该元素的一个表达式, 也就是按照什么规则进行排序
按照该元素的第 1 个元素进行排序
:param element: 列表元素
:return: 列表元素排序依据
"""
return element[1]
代码示例 :
"""
sort 函数代码示例
"""
# 要排序的列表容器
lst = [["Tom", 18], ["Jerry", 12], ["Trump", 80], ["Joe", 72]]
def sort_key_fun(element):
"""
传入列表容器的元素, 返回该元素的一个表达式, 也就是按照什么规则进行排序
按照该元素的第 1 个元素进行排序
:param element: 列表元素
:return: 列表元素排序依据
"""
return element[1]
lst.sort(key=sort_key_fun, reverse=True)
print(lst) # 输出:[['Trump', 80], ['Joe', 72], ['Tom', 18], ['Jerry', 12]]
lst.sort(key=sort_key_fun, reverse=False)
print(lst) # 输出:[['Jerry', 12], ['Tom', 18], ['Joe', 72], ['Trump', 80]]
执行结果 :
D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
[['Trump', 80], ['Joe', 72], ['Tom', 18], ['Jerry', 12]]
[['Jerry', 12], ['Tom', 18], ['Joe', 72], ['Trump', 80]]
Process finished with exit code 0
list.sort 函数 的 key 参数 , 需要传入一个排序函数 , 该函数的规则如下 :
该排序函数 , 可以指定为一个 lambda 表达式 , 也就是匿名函数 ;
该 lambda 匿名排序函数 接收一个 element 参数 , 也就是 list 列表集合的 元素类型变量 , 返回 的是 比较值 ;
lambda 函数可以写为 :
lambda element: element[1]
完整的排序函数调用代码 :
lst.sort(key=lambda element: element[1], reverse=True)
代码示例 :
"""
sort 函数代码示例
"""
# 要排序的列表容器
lst = [["Tom", 18], ["Jerry", 12], ["Trump", 80], ["Joe", 72]]
# 传入 lambda 表达式 / 匿名函数
lst.sort(key=lambda element: element[1], reverse=True)
print(lst) # 输出:[['Trump', 80], ['Joe', 72], ['Tom', 18], ['Jerry', 12]]
lst.sort(key=lambda element: element[1], reverse=False)
print(lst) # 输出:[['Jerry', 12], ['Tom', 18], ['Joe', 72], ['Trump', 80]]
执行结果 :
D:\001_Develop\022_Python\Python39\python.exe D:/002_Project/011_Python/HelloPython/Hello.py
[['Trump', 80], ['Joe', 72], ['Tom', 18], ['Jerry', 12]]
[['Jerry', 12], ['Tom', 18], ['Joe', 72], ['Trump', 80]]
Process finished with exit code 0