首页 >后端开发 >Python教程 >如何对一个列表进行排序,同时保持另一个列表的并行顺序?

如何对一个列表进行排序,同时保持另一个列表的并行顺序?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-07 15:03:15142浏览

How Can I Sort One List While Maintaining Parallel Order in Another?

使用自动排列对并行列表进行排序

问题陈述

给定两个任意的并行列表数据类型,设计一种方法对一个列表进行排序,同时重新排列另一个列表

解决方案

解决此问题的一种常见方法涉及“装饰、排序、取消装饰”习惯用法。使用Python的内置zip函数,我们可以有效地将两个列表的元素组合成元组,并根据第一个列表中的值对这些元组进行排序。然后可以“取消修饰”这个元组的排序列表,以获得所需的排序列表。

实现:

list1, list2 = zip(*sorted(zip(list1, list2)))
# Alternatively, for in-place sorting:
# tups = zip(list1, list2)
# tups.sort()
# list1, list2 = zip(*tups)

优点和性能

这种方法优先考虑简单性和简洁性,尤其是使用邮编功能。但是,对于小型列表,就地版本可能会稍快一些:

tups = zip(list1, list2)
tups.sort()
zip(*tups)

对于较大的列表,单行版本在某些情况下可能表现更好。

替代方法

正如评论中提到的,还存在其他方法,例如对索引进行排序或为排序提供自定义键函数 算法。如果直接比较第二个列表中的元素有问题,这些替代方案可能是合适的。

以上是如何对一个列表进行排序,同时保持另一个列表的并行顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn