如何用Python高效实现两列表元素按索引均值排序?
Pythonic高效实现:按两列表索引均值排序整数
给定两个整数列表:
lst1 = [4,1,3,5,2] lst2 = [1,3,5,2,4]
需求说明:
- 计算每个整数在两个列表中的索引均值(例如整数1在
lst1的索引为1,lst2的索引为0,均值为0.5) - 将所有整数按索引均值从小到大排序,预期结果:
result = [1, 3, 4, 5, 2]
对应各元素的索引均值分别为:0.5、1.5、2、2.5、3.5
高效Pythonic实现方式
利用字典的O(1)索引查找特性,结合内置sorted函数实现,无需复杂迭代:
lst1 = [4,1,3,5,2] lst2 = [1,3,5,2,4] # 快速生成元素到对应列表索引的映射字典 index_map1 = dict(zip(lst1, range(len(lst1)))) index_map2 = dict(zip(lst2, range(len(lst2)))) # 以索引均值为排序依据,对元素进行排序 sorted_result = sorted(lst1, key=lambda num: (index_map1[num] + index_map2[num]) / 2) print(sorted_result) # 输出: [1, 3, 4, 5, 2]
实现说明
- 字典映射索引:通过
dict(zip(lst, range(len(lst))))快速构建元素到索引的映射,这是Python中生成此类映射的简洁方式,且内置操作效率极高。 - 排序逻辑:
sorted函数的key参数接收lambda表达式,直接计算每个元素在两个列表中的索引均值作为排序依据,无需额外循环遍历。 - 效率优势:字典查找为O(1)时间复杂度,排序为O(n log n),整体性能远优于嵌套迭代查找索引的实现方式。
内容的提问来源于stack exchange,提问作者You_Donut
相关产品推荐
相关产品推荐

