pyecharts 画廊网站 : https://gallery.pyecharts.org/#/

  • 在该网站可查看官方示例




一、列表排序




1、使用 sorted 函数对容器进行排序


在之前的博客 【Python】数据容器总结 ② ( 数据容器元素排序 | 字符串大小比较 | 字符大小比较 | 长短一样的字符串大小比较 | 长短不一样的字符串大小比较 ) 中 , 介绍了使用 sorted 函数 对容器中的元素进行排序 ;


sorted 函数语法如下 :

sorted(iterable, key=None, reverse=False)
  • iterable 是要排序的 Python 容器变量 ;
  • key 是一个可选的函数 , 用于指定排序的关键字 ;
  • reverse 是一个可选的布尔值 , 用于指定是否按照逆序排序 ;

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

【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函数对容器进行排序 | 使用 list.sort 函数对列表进行排序 | 设置排序函数 )-LMLPHP


2、使用 list.sort 函数对列表进行排序


在数据处理中 , 经常需要对 列表 进行排序 ;

如果在排序的同时 , 还要指定排序规则 , 那么 就不能使用 sorted 函数 了 , 该函数无法指定排序规则 ;

这里引入 list.sort 方法 , 可以完成对 列表 容器的排序 , 同时还可以指定排序规则 ;


list.sort 方法 会修改原始列表并返回 None ;


list.sort 函数 基本语法如下 :

list.sort(key=None, reverse=False)
  • key 参数 是可选参数 , 通过该关键字可指定一个排序函数 , 该函数将用于比较列表中的元素 ;

    • 指定的排序函数应该接受一个参数并返回一个值 , 表示该参数的比较值 ;
    • 如果没有指定 key 比较函数 , 则默认按元素的值进行比较 ;
  • reverse 参数 也是 可选参数 , 参数类型是布尔值类型 , 指定是否按照逆序排序 ;

    • 如果设置为 True,则从大到小排序 ;
    • 如果设置为 False,则从小到大排序 ;
    • 默认值为 False ;
  • 返回值 为 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

【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函数对容器进行排序 | 使用 list.sort 函数对列表进行排序 | 设置排序函数 )-LMLPHP


3、使用 list.sort 函数对列表进行排序 - 设置排序函数


list.sort 函数 的 key 参数 , 需要传入一个排序函数 , 该函数的规则如下 :

  • 指定的排序函数应该 接受一个参数 并 返回一个值 , 该返回值就是列表元素的比较值 ;
  • 返回的 比较值 应该是与 列表元素相关 , 一般是由列表元素 经过一系列计算得到 ;
  • 如果没有指定 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

【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函数对容器进行排序 | 使用 list.sort 函数对列表进行排序 | 设置排序函数 )-LMLPHP


4、使用 list.sort 函数对列表进行排序 - 设置 lambda 匿名排序函数


list.sort 函数 的 key 参数 , 需要传入一个排序函数 , 该函数的规则如下 :

  • 指定的排序函数应该 接受一个参数 并 返回一个值 , 该返回值就是列表元素的比较值 ;
  • 返回的 比较值 应该是与 列表元素相关 , 一般是由列表元素 经过一系列计算得到 ;
  • 如果没有指定 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

【Python】使用 pyecharts 模块绘制动态时间线柱状图 ① ( 列表排序 | 使用 sorted 函数对容器进行排序 | 使用 list.sort 函数对列表进行排序 | 设置排序函数 )-LMLPHP

07-26 06:19