使用自动排列对并行列表进行排序
问题陈述
给定两个任意的并行列表数据类型,设计一种方法对一个列表进行排序,同时重新排列另一个列表
解决方案
解决此问题的一种常见方法涉及“装饰、排序、取消装饰”习惯用法。使用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中文网其他相关文章!