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

2023-07-25 23:30:00


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

在这里插入图片描述


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

在这里插入图片描述


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

在这里插入图片描述


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

在这里插入图片描述

更多推荐

让开源数据开发平台助力提质增效!

用低代码技术平台,可以提高办公协作效率,可以让数据资源变得更有意义和价值,也可以为企业做出更理想的发展决策。作为开源数据开发平台服务商,流辰信息谨守研发初心,一直在低代码技术平台领域努力耕耘,为行业的进步和数字化发展贡献力量。由于社会的发展和进步,传统的表单制作工具已经无法为企业创造高效益,如果想要获得发展和壮大,需要

初探微前端

微前端一、微前端的背景和概述1.1概念1.2特点1.3背景二、微前端的实现方式2.1服务端集成2.2运行时集成三、现有的解决方案3.1single-spa3.2qiankun3.3micro-app四、总结🚀🚀🚀随着互联网技术的不断发展,前端应用规模和复杂性也在不断增加。传统的单体前端应用面临着很多挑战,比如应用

webpack:系统的了解webpack一些核心概念

文章目录webpack如何处理应用程序?何为webpack模块chunk?入口(entry)输出(output)loader开发loader插件(plugin)简介流程插件开发:Tapable类监听(watching)compiler钩子compilation钩子compiler和compilation创建自定义插件l

有关在 Windows 上使用 Python 的常见问题解答

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录使用pipinstall解决包安装问题使用WSL解决pip安装问题什么是py.exe?为什么运行python.exe会打开MicrosoftStore?当我复制粘贴文件路径时,为什么在Python中不起作用?什

前端js面试题 (一)

文章目录1、请你阐述一下原型与原型链。2、开发中的闭包问题。3、call、apply、bind的用途与区别4、手写一个promise5、箭头函数与普通函数6、递归与尾递归。7、await返回值是什么。8、promise.then,setInterval,Promise.resolve,执行顺序9、letconstvar

Python打包教程 PyInstaller和cx_Freeze

当我们开发Python应用程序时,通常会将代码保存在.py文件中,然后通过Python解释器运行它。这对于开发和测试是非常方便的,但在将应用程序分享给其他人或在不同环境中部署时,可能会带来一些问题。为了解决这些问题,我们可以使用打包工具将Python应用程序转换为可执行文件,这样它就可以在不需要安装Python解释器的

​​​​MyBatis友人帐之基础入门

一、简介1.1什么是MyBatisMyBatis是一个开源的、轻量级的数据持久层框架,它可以简化JDBC的操作,让开发者只需要关注SQL语句本身,而不用处理加载驱动、创建连接、创建语句等繁琐的过程。MyBatis支持自定义SQL、存储过程和高级映射,可以通过XML或注解来配置和映射原始类型、接口和JavaPOJO(普通

Android 虚拟机

文章目录Android虚拟机Java虚拟机基于栈的虚拟机栈的执行流程Dalvik虚拟机基于寄存器的虚拟机寄存器的执行流程Java虚拟机与Dalvik虚拟机区别ART虚拟机Android7.0的运行方式Android虚拟机Java虚拟机基于栈的虚拟机每一个运行时的线程,都有一个独立的栈。栈中记录了方法调用的历史,每一次方

交流共享,共筑智算底座丨九州未来受邀出席英特尔线下沙龙

随着AI技术的升级迭代、生成式AI模型智能化水平的持续提升,AIGC加速向多种场景渗透,AIGC迎来应用爆发期,有望实现且跨越更多领域的融合,形成新的应用场景和解决方案,持续推动数字技术的创新与应用,助力各行各业实现数字化转型,开辟人类生产交互新纪元。9月13日,英特尔于上海举办2023英特尔AIGC创新与行业应用研讨

Docker容器化技术(从零学会Docker)

文章目录前言一、初识Docker1.初识Docker-Docker概述2.初识Docker-安装Docker3.初识Docker-Docker架构4.初识Docker-配置镜像加速器二、Docker命令1.Docker命令-服务相关命令2.Docker命令-镜像相关命令3.Docker命令-容器相关命令三、Docker

Docker容器内使用Docker——DinD与DooD

文章目录DinD与DooD简介DinD与DooD的应用场景DooD构建Docker镜像构建DooD镜像运行DooD镜像直接运行DockerDooD模式运行DockerDinD构建Docker镜像通过官方dind镜像使用dind模式的docker本地构建DinD镜像下载解压二进制Docker文件构建DinD镜像运行Din

热文推荐