首页 >后端开发 >Python教程 >如何在 Python 中高效地对两个并行列表进行排序,同时保持同步?

如何在 Python 中高效地对两个并行列表进行排序,同时保持同步?

Barbara Streisand
Barbara Streisand原创
2024-12-11 14:49:12461浏览

How Can I Efficiently Sort Two Parallel Lists in Python While Maintaining Synchronization?

通过并行列表排列对列表进行排序

给定两个并行列表,可以对其中一个进行排序,同时对另一个进行同步重新排序。这是通过对第一个列表进行排序并使用重新排序的元素的索引来重新排列第二个列表来实现的。

一种常见的方法是“装饰、排序、取消装饰”习惯用法,它将两个列表压缩,然后对它们进行排序基于第一个列表,然后解压缩结果。使用 Python 的 zip 函数,可以简明地实现如下:

list1, list2 = zip(*sorted(zip(list1, list2)))

但是,对于较大的列表,存在更高效的就地版本:

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

对于包含非-可以使用可比较元素、使用 lambda 函数的排序索引。或者,可以为排序提供一个关键函数,以避免比较第二个列表的元素:

result1, result2 = zip(*sorted(zip(list1, list2), key=lambda x: x[0]))

空输入应单独处理,并且应该意识到就地版本可能会稍快一些,特别是对于小列表。

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

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