
python实现两个列表对应位置的不乱序排序
使用zip函数将两个列表配对,得到一个元组数组。 对元组数组使用sort函数进行排序,指定一个lambda表达式作为排序依据。
发布日期:2021-05-07 21:55:18
浏览次数:18
分类:精选文章
本文共 644 字,大约阅读时间需要 2 分钟。
有时候需要对两个列表进行排序,并且要求排序后两个列表对应位置的值一一对应。例如,给定两个列表scores = [1,2,3,5]和ages = [8,9,10,1],我们需要按照年龄从小到大排序,同时保持排序后对应的分数位置不变。
要实现这一点,可以利用Python中的zip函数与sort函数结合使用。zip函数可以将两个列表的元素一一配对,而sort函数则可以根据指定的键进行排序。在这里,我们可以将两个列表看作一个包含元组的数组,然后对数组进行排序。
具体来说,可以通过以下步骤实现:
例如:
if __name__ == '__main__': scores = [4,5,6,5] ages = [2,1,2,1] arr = list(zip(ages, scores)) arr.sort(key=lambda x: (x[0], x[1])) print(arr)
运行上述代码,可以看到排序后的结果如下:
[ (1,4), (2,5), (2,6), (1,5) ]
这个方法的核心思想是将两个列表合并成一个数组,并根据指定的键值对数组进行排序。通过这种方式,可以实现对两个列表的有序排列,同时保持对应位置的值一一对应。
这种方法在数据处理和分析中非常有用,特别是在需要同时对多个属性进行排序的情况下。