我正在尝试用python这个简单的任务编写代码(这是一个更大的项目的一部分):
我有两个列表,其中第一个(假设A = [1, 2, 3, 4, 5, 6]
是已排序)和第二个(例如B = [3, 4, 1, 6, 2, 5]
,未排序)。我要实现的是获取listA
中排序列表的每个元素的索引值B
。例如,i = 3
当我搜索element时,我想给出index的结果A[5] = 6
。我已经通过以下简单方式实现了:
for i in range(6):
for j in range(6):
if A[i] == B[j]:
index = j
我想提出一种将其减少到仅一个循环而不是这两个嵌套for
循环的方法。
如果您知道其中的所有值B
都是唯一的,则一种方法是创建一个字典,将值映射B
到它们的索引中。
b_dict = {}
for i, b in enumerate(B):
b_dict[b] = i
然后,循环A
并从获取所有值b_dict
。
a_indices = [b_dict[a] for a in A]
有了您的清单,我们得到
A: [1, 2, 3, 4, 5, 6]
B: [3, 4, 1, 6, 2, 5]
a_indices: [2, 4, 0, 1, 5, 3]
与其他解决方案O(n ^ 2)相比,该解决方案为O(n),因此在大型列表上将更快。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句