Python3:两个 list 一一对应,将一个 list 排序,要求另一个 list 随之排序

简介: Python3:两个 list 一一对应,将一个 list 排序,要求另一个 list 随之排序

Python3:两个 list 一一对应,将一个 list 排序,要求另一个 list 随之排序


一、需求

现有两个 list:A, B,其中A中保存日期,B中保存该日期下的产量,要求按照产量排序,并使日期列表随之排序。

 

二、解法

1. 将A,B两个 list 变成 list of tuple,使用 zip() 函数

zipped = zip(A,B)
# print(list(zipped))
# python2中可以直接 print(zipped), python3 中改为 print(list(zipped))

假设A = [1,2,3], B = [6,5,4]

此时 zipped = [(1,6), (2,5), (3,4)]

 

2. 排序

sort_zipped = sorted(zipped,key=lambda x:(x[1],x[0]))
# 先按 x[1] 进行排序,若 x[1] 相同,再按照 x[0] 排序

此时 sort_zipped = [(3,4), [2,5], [1,6]]

上述代码完成按照产量排序。

 

3. 拆分

result = zip(*sort_zipped)
# 将 sort_zipped 拆分成两个元组,为 [(3,2,1),(4,5,6)]
x_axis, y_axis = [list(x) for x in result]
# 将拆分后的两个元组分别变成 list 列表,为 [3,2,1],[4,5,6]

以上,问题解决。

 

————————————————————————————————————————————————————————

补充个知识点。

zip 是一个生成器 的函数,它的结果是一个迭代器,该结果只能调用一次,举例如下图:

上图说明 b 调用一次之后,再调用的 c 则为空。如果想要复用这个结果,需要保存到 list 里,即:

temp = list(zipped)
# 接本文开头的例子,如果直接 print(list(zipped)),则之后 zipped为空,因为已经用完一次迭代器了

关于迭代器和生成器,分享个链接,简单易懂:

http://www.runoob.com/python3/python3-iterator-generator.html

相关文章
|
9天前
|
搜索推荐 Python
快速排序的 Python 实践:从原理到优化,打造你的排序利器!
本文介绍了 Python 中的快速排序算法,从基本原理、实现代码到优化方法进行了详细探讨。快速排序采用分治策略,通过选择基准元素将数组分为两部分,递归排序。文章还对比了快速排序与冒泡排序的性能,展示了优化前后快速排序的差异。通过这些分析,帮助读者理解快速排序的优势及优化的重要性,从而在实际应用中选择合适的排序算法和优化策略,提升程序性能。
23 1
|
1月前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
2月前
|
NoSQL Java Redis
List集合按照由小到大排序或者由大到小排序
List集合按照由小到大排序或者由大到小排序
22 3
|
1月前
|
存储 算法 搜索推荐
算法进阶之路:Python 归并排序深度剖析,让数据排序变得艺术起来!
算法进阶之路:Python 归并排序深度剖析,让数据排序变得艺术起来!
72 0
|
1月前
|
索引 Python
Python列表操作-推导式(List Comprehension)
Python列表操作-推导式(List Comprehension)
|
2月前
|
Python
Python中几种lambda排序方法
【9月更文挑战第7天】在Python中,`lambda`表达式常用于配合排序函数,实现灵活的数据排序。对于基本列表,可以直接使用`sorted()`进行升序或降序排序;处理复杂对象如字典列表时,通过`lambda`指定键值进行排序;同样地,`lambda`也适用于根据元组的不同位置元素来进行排序。
|
2月前
|
Python
Python量化炒股的获取数据函数— get_billboard_list()
Python量化炒股的获取数据函数— get_billboard_list()
|
2月前
|
数据处理 Python
python遍历文件夹所有文件按什么排序
python遍历文件夹所有文件按什么排序
|
2月前
|
数据处理 Python
Python遍历文件夹所有文件并按指定排序
Python遍历文件夹所有文件并按指定排序
|
4月前
|
Java API 存储
Java如何对List进行排序?
【7月更文挑战第26天】
206 9
Java如何对List进行排序?